使用不同的 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 的舞蹈