从其他实体更新CoreData实体时的良好做法

时间:2017-05-26 13:30:51

标签: ios swift core-data

我正在使用一个API,它将返回另一个已存在于CoreData中的对象实例,但具有更新的属性。这样做的好习惯是什么?

我一直用insertNewObject(forEntityName:into:)创建一个新实例,然后替换本地获取的实例,设置实体之间的新关系(因为当更新的对象替换本地对象时,这些关系被破坏,因为更新的对象将这些属性遗漏了),然后在managedObjectContext上调用save。

问题在于保存了对象,但我手动尝试更改的属性却没有。例如:

let oldObject = ...
block_calling_the_backend(receives newObject from completionClosure(response = true/false, newObject?)) {
   if response == true {
     let parent = oldObject.parent
     oldObject.parent = nil
     parent.child = nil
     oldObject = newObject
     newObject.parent = parent
     parent.child = newObject

    do {
      try managedObjectContext.save()
    } catch {
      print("Something went wrong when saving the context.")
    }
  }
}

我尝试从上下文中删除获取的对象,然后尝试保存,但随后所有数据都丢失了。这样做的好习惯是什么?

P.S。当我手动替换属性时,一切都被保存。

0 个答案:

没有答案