我正在使用一个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。当我手动替换属性时,一切都被保存。