我在 Core Data 中使用并发。像这样的Apple 文档经常告诉我,上下文的同步取决于我的应用程序的语义。而且我找不到如何合并UIManagedObjectContext
s 的具体示例。所以在我的应用程序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];
}
}
}
}
}
但是这种方法会创建重复的对象。