为啥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?的主要内容,如果未能解决你的问题,请参考以下文章

这是文档中的错误吗? -existingObjectWithID:error: 或 -objectWithID: 似乎声称不同的东西不匹配

为啥需要保存按钮?

webstorm为啥不自动保存啦

为啥我的核心数据保存缓慢?

为啥没有@Transactional 我可以保存? [复制]

为啥 NSCoding 无法在正确保存后解码对象?