为啥existingObjectWithID 保存后会返回一个带temporaryID 的managedObject?

Posted

技术标签:

【中文标题】为啥existingObjectWithID 保存后会返回一个带temporaryID 的managedObject?【英文标题】:Why does existingObjectWithID return an managedObject with temporaryID after save?为什么existingObjectWithID 保存后会返回一个带temporaryID 的managedObject? 【发布时间】:2014-07-28 10:28:07 【问题描述】:

为什么用existingObjectWithID获取的managedObject的objectID在main managedObjectContext被保存后还是临时的?

var dmo: NSManagedObject? = nil                                    
dmo = NSEntityDescription.insertNewObjectForEntityForName(relationshipDescription.destinationEntity.name, inManagedObjectContext: mocIn) as? NSManagedObject

let success = temporaryContext.save(nil)                                    
Utility.managedObjectContext().performBlockAndWait(
    let kkk = Utility.managedObjectContext().save(nil)
)

println("isTemporaryID: \(dmo!.objectID.temporaryID)") // <- returns true

【问题讨论】:

【参考方案1】:

我找到了答案here,上面写着:

因为孩子没有从父 MOC 那里得到更新。父 MOC 将使用永久 ID 更新其自己的 NSManagedObject 实例,但该更改不会下推到属于子 MOC 的 NSManagedObject 实例。

【讨论】:

以上是关于为啥existingObjectWithID 保存后会返回一个带temporaryID 的managedObject?的主要内容,如果未能解决你的问题,请参考以下文章