使用不同的 NSManagedObjectContexts 时更新 NSManagedObject

Posted

技术标签:

【中文标题】使用不同的 NSManagedObjectContexts 时更新 NSManagedObject【英文标题】:Updating an NSManagedObject when using different NSManagedObjectContexts 【发布时间】:2012-09-11 23:26:47 【问题描述】:

我有一个连接到 NSFetchedResultsController 的表视图,它正在侦听 UIManagedDocument 的 managedObjectContext。工作正常。现在,我正在后台上下文中创建一个新对象(其父对象是 UIManagedDocument 的 managedObjectContext)。该对象按预期在我的表格视图中弹出。

现在,稍后我将更新我刚刚创建的那个对象。我在后台上下文中更新它,但由于某种原因,一旦更新完成,表格视图实际上会显示两个(重复)对象,而不仅仅是一个。我很困惑为什么会发生这种情况,但这一定是由于使用了不同的上下文。事实上,我验证了我只创建了一次对象(使用 insertObject:...)。

关于如何解决这个问题的任何想法?谢谢!

【问题讨论】:

【参考方案1】:

已知错误,具有多种不同的症状,包括您的。

在保存到父上下文之前,您需要获取对象的永久 ID。

详情见此贴:Core Data could not fullfil fault for object after obtainPermanantIDs

【讨论】:

以上是关于使用不同的 NSManagedObjectContexts 时更新 NSManagedObject的主要内容,如果未能解决你的问题,请参考以下文章

IOS CoreData,使用哪个 NSManagedObjectContextConcurrencyType,为啥?

跳过核心数据迁移

最佳实践 - iOS 中的 NSManagedObjectContextObjectsDidChangeNotification

CoreData insertNewObjectForEntityForName 导致崩溃

NSFetchedResultsController、NSManagedObjectContextDidSaveNotification 和 MagicalRecord 的舞蹈

尝试使用两个不同的文本来定位相同的元素,使用 .withText 用于不同的环境