使用managedObjectContext属性保存自定义核心数据对象是否正确

时间:2017-09-10 19:51:14

标签: ios swift core-data

我在核心数据中有一个托管对象。这是一个包含所有必需托管属性的自定义对象。如果我使用同一对象的managedObjectContext属性调用save方法,我想知道它是否正确?当我们创建这个对象时,我们将一个managedObjectContext传递给初始化器。此对象是否在该属性中保存传递的上下文?

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let entity = NSEntityDescription.entity(forEntityName: "Message", in: context)
let message = PopMessage(entity: entity!, insertInto: context)

现在在修改了它的属性之后我可以调用这样的东西吗?

message.managedObjectContext.save()

我发现这更方便,但不确定这是否会产生预期效果。

1 个答案:

答案 0 :(得分:1)

很好。两个上下文都指向同一个对象,结果是相同的。唯一需要注意的问题是托管对象没有保留指向上下文的强指针。因此,如果上下文已经留下内存,您将遇到问题。如果您创建上下文而不将其分配给变量,或者使用块传递managedObject,则会发生这种情况。