在 Core Data 中插入一个新的托管对象

Posted

技术标签:

【中文标题】在 Core Data 中插入一个新的托管对象【英文标题】:Inserting a new managed object in Core Data 【发布时间】:2012-05-24 07:10:00 【问题描述】:

我是 Core Data 的新手,我觉得我没有掌握它。当您要创建一个新的托管对象时,您必须使用我在 NSEntityDescription 类底部粘贴的方法。

现在这个对象是在上下文中注册的,对吗?那你为什么在 NSManagedContext 中有insertObject: 呢?在使用NSEntityDescription 中的方法后,它无需调用该方法即可工作。谁能解释一下?

NSManagedContext

insertObject:

NSEntityDescription

+ (id)insertNewObjectForEntityForName:(NSString *)entityName inManagedObjectContext:(NSManagedObjectContext *)context

【问题讨论】:

【参考方案1】:

您可以使用nil 上下文创建 NSManagedObject,然后决定是否要将其添加到上下文中。 你可能也喜欢这个:Is there a way to instantiate a NSManagedObject without inserting it?

【讨论】:

啊,所以如果你用nil作为上下文创建实例,那么你稍后将它传递给insertObject? 但如果这不是他们中的一些人指出的预期用途,为什么苹果提供这种方法?还是将nil 作为上下文正常传递? 我一直使用它,没有任何问题。当您有多个上下文时,该方法可能很有用。然后你可以决定保存哪一个。 好吧,但是如果你使用 NSEntityDescription 方法,你已经用上下文注册了返回的对象,并且你没有在 NSManagedContext 中调用 insertObject: 对吗? 是的,完全正确。仅在上下文为 nil 时使用 insertObject:。

以上是关于在 Core Data 中插入一个新的托管对象的主要内容,如果未能解决你的问题,请参考以下文章

Core Data,我如何有效地查找和删除托管对象

Swift 中大量 Core Data 批量插入的内存泄漏

防止托管对象被 Core Data 再次出错

如何在代码中复制 Core Data 托管对象

Core Data 3 托管对象上下文

为啥使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储?