Ios 核心数据-如何初始化对象,但不将其添加到持久存储?

Ios 核心数据-如何初始化对象,但不将其添加到持久存储?,ios,swift,core-data,nsmanagedobject,nsmanagedobjectcontext,Ios,Swift,Core Data,Nsmanagedobject,Nsmanagedobjectcontext,我想初始化一个对象并填充它,但不想将它添加到持久存储中。我希望表单上有一个用户,并将数据添加到managedobject的字段中,但只在用户按下save按钮后保存数据 我正在使用AERecord coreData包装器(如果相关)如果用户取消,只需从托管对象上下文中删除对象,如下所示: [object deleteInContext:managedObjectContext] 请参考只是在创建时不要告诉它要使用什么上下文。例如,指定的初始值设定项是init(entity:insertInto:)

我想初始化一个对象并填充它,但不想将它添加到持久存储中。我希望表单上有一个用户,并将数据添加到managedobject的字段中,但只在用户按下save按钮后保存数据


我正在使用AERecord coreData包装器(如果相关)

如果用户取消,只需从托管对象上下文中删除对象,如下所示:

[object deleteInContext:managedObjectContext]


请参考

只是在创建时不要告诉它要使用什么上下文。例如,指定的初始值设定项是
init(entity:insertInto:)
,但第二个参数是可选的。过零。稍后,您可以使用
insert(:)
方法将其添加到托管对象上下文中。

在managedObjectContext中创建对象时,是否只需在managedObjectContext上调用save?在您的情况下,不要调用AERecord.save()-如果上下文不是nil,此方法将调用[context insertObject:self](这将导致调用awakeFromInsert())。换句话说,按照您的建议执行操作不会调用awakeFromInsert,OP必须手动设置默认值。此外,如果他有关系,这些关系将不会建立。但是,避免在NSManagedObjectContext上调用save不会按照他要求的那样保存对象并将其推送到PersistentStore,但仍然会给他一个有效的对象来处理,而不会造成复杂性。您的方法会将对象插入到上下文中,从而可能建立关系,在知道实际需要该对象之前。如果不需要,它还需要额外的步骤来删除对象——否则,他必须永远不再保存上下文,以避免保存不需要的对象。这两种方法都很复杂。我们不要把事情搞得太复杂了,这只是一个简单的删除,仅此而已。CoreData将在百万分之一秒的时间内为您处理所有关系和其他一切。如果我不得不在避免调用awakeFromInsert()和不获取NSManagedObject和所有其他机构的所有默认值,甚至还没有将其插入NSManagedObjectContext(这是一个巨大的步骤和复杂的过程)之间做出选择,而不是在取消时简单地调用基本的deleteObject,我选择后者。但我想你的答案是正确的。