Core data existingObjectWithID在子managedObjectContext中不返回managedObject,为什么?

Core data existingObjectWithID在子managedObjectContext中不返回managedObject,为什么?,core-data,Core Data,1创建托管对象,并将其保存在mocOut中的managedObjectContext中。mocOut是主managedObjectContext的子级的子级 var dmo: NSManagedObject? = nil mo = NSEntityDescription.insertNewObjectForEntityForName("xxx", inManagedObjectContext: mocOut) as? NSManagedObject let success = mocOut.sa

1创建托管对象,并将其保存在mocOut中的managedObjectContext中。mocOut是主managedObjectContext的子级的子级

var dmo: NSManagedObject? = nil
mo = NSEntityDescription.insertNewObjectForEntityForName("xxx", inManagedObjectContext: mocOut) as? NSManagedObject
let success = mocOut.save(nil)
2创建名为mocIn的mocOut的子managedObjectContext

为什么existingObjectWithID方法返回nil?我在外部managedObject上下文中创建并保存了managedObject

更新


在save调用之后,我又添加了两个save调用来保存上面的MOC,也是带有persistentStore的主MOC。执行保存后,我可以看到记录已写入数据库,但现有ObjectWithId方法仍无法在mocIn中获取记录。

显示如何获取managedObjectID。显示如何获取managedObjectID。如下所示:dmo!。objectID看起来好像您需要检查mocIn、objectID、parentContext等是否可能为零。创建objectID后,检查是否可以立即使用它检索对象。-另外,我认为您应该尝试捕捉错误,而不是使用nil。我检查了我是否可以在使用existingObjectWithID保存后直接获取managedObject
let mocIn = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
mocIn.parentContext = mocOut
mocIn.performBlockAndWait({
let managedObject = mocIn.existingObjectWithID(dmo!.objectID, error: nil) // <- return nil