在我以前的项目中,我建立了一个核心数据存储和模型。在这个模型中,我使用一个NotificationCenter来观察NSManagedObjectContext。每当保存上下文时,它都会与其他上下文合并:
NotificationCenter.default.addObserver(self, selector: #selector(didSaveContext), name: .NSManagedObjectContextDidSave, object: nil)
@objc func didSaveContext(notification: Notification) {
guard let sender = notification.object as? NSManagedObjectContext else { return }
if sender === mainContext {
userContext.perform { self.userContext.mergeChanges(fromContextDidSave: notification) }
idleContext.perform { self.idleContext.mergeChanges(fromContextDidSave: notification) }
} else if sender === userContext {
mainContext.perform { self.mainContext.mergeChanges(fromContextDidSave: notification) }
idleContext.perform { self.idleContext.mergeChanges(fromContextDidSave: notification) }
} else if sender === idleContext {
mainContext.perform { self.idleContext.mergeChanges(fromContextDidSave: notification) }
userContext.perform { self.idleContext.mergeChanges(fromContextDidSave: notification) }
} else {
userContext.perform { self.userContext.mergeChanges(fromContextDidSave: notification) }
mainContext.perform { self.mainContext.mergeChanges(fromContextDidSave: notification) }
idleContext.perform { self.idleContext.mergeChanges(fromContextDidSave: notification) }
}
}但是自从iOS10之后,苹果推出了NSPersistentContainer,我可以使用:
persistentContainer.viewContext.automaticallyMergesChangesFromParent = true这是否意味着我不再需要使用通知中心来合并更改?
发布于 2018-07-24 15:48:09
这是否意味着我不再需要使用通知中心来合并更改?
否,您必须实现通知并调用mergeChanges()合并更改。
https://stackoverflow.com/questions/47320233
复制相似问题