【发布时间】:2016-05-21 14:26:54
【问题描述】:
插入或更改对象时,我没有收到 NSManagedObjectContextObjectsDidChanged 通知。上下文有一个父上下文,这可能是个问题吗?在父上下文中获取通知没有问题。
这就是我创建子上下文的方式:
func createPrivateContext() -> NSManagedObjectContext{
let privateManagedObject = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
privateManagedObject.parentContext = self.managedObjectContext
privateManagedObject.mergePolicy = NSOverwriteMergePolicy
return privateManagedObject
}
这就是我将观察者添加到通知中心的方式:
self.privateMOC = appDelegate.createPrivateContext()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "objectsDidChanged:", name: NSManagedObjectContextObjectsDidChangeNotification, object: self.privateMOC!)
如何在子上下文中插入新对象:
let privateMoc = getPrivateMoc()
let newTask = Task.createNewTaskInManagedObjectContext(privateMoc)
try! privateMoc.obtainPermanentIDsForObjects([newTask])
预计会通知对象已插入,但我从未收到通知。
更新: 将子 MOC 从 PrivateConcurrencyType 更改为 MainQueueConcurrencyType 时,通知确实有效。
【问题讨论】:
标签: ios cocoa-touch core-data