Core Data で同時実行を使用します。このような Apple ドキュメントでは、コンテキストの同期はアプリケーションのセマンティクスに依存するとよく言われました。また、s をマージする具体的なサンプルが見つかりませんUIManagedObjectContext
。したがって、私のアプリではUIManagedObject
、異なるコンテキストで異なるプロパティ値を持つ場合があります。オブジェクトを置き換えるか、そのプロパティを更新して、コンテキストをマージする必要があります。これが私のコードです:
- (void)__saveToMainContext
{
if ([_context_ hasChanges])
{
NSError *error = nil;
if (![_context_ save:&error])
{
if (error.code == NSManagedObjectMergeError)
{
for (NSMergeConflict* conflict in [[error userInfo] objectForKey:@"conflictList"])
{
[_context_ refreshObject:[conflict sourceObject] mergeChanges:YES];
}
}
}
}
}
ただし、この方法では重複オブジェクトが作成されます。