【发布时间】:2012-03-15 21:25:31
【问题描述】:
我有两个NSManagedObjectContext 实例:一个用于主线程,另一个用于后台线程(通过NSOperation。)为了线程安全,这两个上下文只共享一个NSPersistentStoreCoordinator。
我遇到的问题是第一个上下文(在主线程上)中的未决更改在执行-save 之前无法用于第二个上下文。这是可以理解的,因为共享持久存储不会保留被-insertedObjects、-updatedObjects 和-deletedObjects 跟踪的NSManagedObjects 的副本。
不幸的是,这给用户体验带来了问题:任何未保存的更改都不会出现在后台线程中生成的(耗时)报告中。
我能想到的唯一解决方案是讨厌:从第一个上下文中获取插入、更新和删除的对象,并将它们移植到第二个上下文的对象图上。数据集中有一些相当复杂的关系,所以我很犹豫要不要朝这个方向走。我希望这里有人能提供更好的解决方案。
【问题讨论】:
标签: objective-c core-data nsmanagedobject nsmanagedobjectcontext nsoperation