将 NSManagedObject 重新插入到 ManagedObjectContext

Re-inserting NSManagedObject to ManagedObjectContext

我创建了一个没有有效上下文的 NSManageObject 实例,只是为了用它来保存数据并传递它

convenience init() {
    let entityDescription =  NSEntityDescription.entityForName("UserEntity", inManagedObjectContext:managedContext)
    self.init(entity: entityDescription!, insertIntoManagedObjectContext: nil)
}

但有时让 Core Data 跟踪(保存)它们对我来说也很方便。在那些情况下,我执行以下操作将其添加到核心数据管理对象上下文

myManagedContext.insertObject(myUserEntityObject)

这一切都很好。

我的问题是,如果我多次重新插入对 myManagedContext 的相同引用是否真的很重要?这种重新插入有什么缺点吗?在我看来,它应该不会有什么不同,因为它插入了相同的对象引用。

只要满足两个条件就是安全的:

  1. 是同一个托管对象上下文
  2. 托管对象的ID仍然是一个临时ID(即托管对象尚未保存)。

让插入调用看起来像

会更安全
if myUserEntityObject.objectID.isTemporaryID {
    myManagedContext.insertObject(myUserEntityObject)
}