我有一个NSManagedObjectContext
设置为有一个NSPrivateQueueConcurrencyType
我在我的应用程序中大部分时间都在使用它。
除此之外,我还创建了一个子 MOCNSMainQueueConcurrencyType
与可可绑定一起使用(我听说绑定不适用于私有队列 MOC)。我绑定了一些ObjectController
和一个ArrayController
到这个子上下文。我非常希望将子进程保留在主队列上,而不是交换 MOC 队列类型。
当我通过 UI 对绑定对象进行更改时,更改不会传播到父上下文。当我对父上下文进行更改时,它们不会过滤到对象/数组控制器。
我怎样才能做到这一点?是否有一个设置可以告诉对象/数组控制器适当刷新其上下文并在进行更改时保存它?
要对父级进行更改,您需要保存子级。如果要持久保存更改,还需要在之后保存父级。
[child save:&error];
[parent performBlock:^{
[parent save:&parentError];
}];
要将更改从父级带到子级,您需要使用父级的通知方法合并更改NSManagedObjectContextDidSaveNotification
或在子上下文中重新获取。对于你的情况来说,合并可能会更好。
- (void)managedObjectContextDidSave:(NSNotification *)notification {
// Here we assume that this is a did-save notification from the parent.
// Because parent is of private queue concurrency type, we are
// on a background thread and can't use child (which is of main queue
// concurrency type) directly.
[child performBlock:^{
[child mergeChangesFromContextDidSaveNotification:notification];
}];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)