Ján*_*nos 10 core-data nsfetchedresultscontroller nsmanagedobjectcontext ios
我创建了两个这样的上下文:
// create writer MOC
_privateWriterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_privateWriterContext setPersistentStoreCoordinator:_persistentStoreCoordinator];
// create main thread MOC
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_managedObjectContext.parentContext = _privateWriterContext;
Run Code Online (Sandbox Code Playgroud)
我有一个NSFetchResultedController发起人_managedObjectContext.
我知道这很奇怪,但我正在向父母添加一条记录_privateWriterContext,我就是saving它.
令人惊讶的是,子上下文因此FRC得到有关此事件的通知.为什么?我没有reset孩子,或其他任何东西.只要子上下文不会被保存,我认为它们是独立的实体.
在@pteofil文章中我找到了这一行:
当在上下文中进行更改但未保存时,它对所有'后代都可见,但对其'祖先不可见.
..它被推送到持久性存储(通过持久性存储协调器),并且对连接到商店的所有上下文都可见.
这是不应该发生的。添加一个 NSManagedObject ('record' ) 到parentContext,不会让子进程自动知道这个对象。只有当你让childContext执行fetch时,它才会从parentContext中获取。为了弄清楚您的情况发生了什么,这里有一些建议:
我使用了类似的方法,但有所不同:childContext 是用于解析新数据(在私有队列上)的上下文,当解析完成时,chid 调用 save:。这会将更改保存到父级,在我的例子中是 mainQueueContext。对 save: 的调用将导致 mainQueueContext 接收所有新解析的对象,并且使用该 mainQueueContext 的任何 fetchedResultsController 然后将调用其新/更改/更新/删除对象的委托方法。您也可以尝试颠倒您的孩子/父母关系,看看它是否按照文档中所述工作,只是为了找出发生了什么。
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |