将 NSManagedObject 重新插入到 ManagedObjectContext
Posted
技术标签:
【中文标题】将 NSManagedObject 重新插入到 ManagedObjectContext【英文标题】:Re-inserting NSManagedObject to ManagedObjectContext 【发布时间】:2016-11-09 05:53:30 【问题描述】:我有一个 NSManageObect 实例,我在没有有效上下文的情况下创建它只是为了使用它来保存数据并传递它
convenience init()
let entityDescription = NSEntityDescription.entityForName("UserEntity", inManagedObjectContext:managedContext)
self.init(entity: entityDescription!, insertIntoManagedObjectContext: nil)
但有时让 Core Data 跟踪(保存)它们对我来说很方便。在这些情况下,我执行以下操作将其添加到核心数据托管对象上下文中
myManagedContext.insertObject(myUserEntityObject)
这一切都很好。
我的问题是,如果我多次重新插入对 myManagedContext 的相同引用,这实际上是否重要?这种重新插入有什么不好的地方吗?在我看来,它不应该有所作为,因为它插入了相同的对象引用。
【问题讨论】:
【参考方案1】:只要满足两个条件就是安全的:
-
这是同一个托管对象上下文
托管对象的 ID 仍然是临时 ID(即托管对象尚未保存)。
让插入调用看起来像这样会更安全
if myUserEntityObject.objectID.isTemporaryID
myManagedContext.insertObject(myUserEntityObject)
【讨论】:
以上是关于将 NSManagedObject 重新插入到 ManagedObjectContext的主要内容,如果未能解决你的问题,请参考以下文章
插入的 NSManagedObject 无法保存时会发生啥情况?
在插入之前分配 NSManagedObject 属性不会坚持