我对coredata有一个非常讨厌的问题。 我有一个NSManagedObject sublcass,即“Customer”,一切都很好。 有时我需要在coredata堆栈之外创建一个新客户,并且只在某些情况下我需要保存它。
我知道我可以使用NSUndomanager,但这似乎不是一个好主意。
现在我有两个类Customer_managed(NSManagedObject的子类)和Customer_unmanaged(NSObject的子类)。 在Customer_unmanaged中,我添加了一个 - (void)save方法,但这两个类非常耦合,我正在寻找最佳模式。
感谢
答案 0 :(得分:0)
你这是错误的方式。您应始终使用托管对象上下文来创建托管对象。如果要丢弃它,只需在保存之前删除该对象,它将永远不会触及持久性存储。
如果要将两个实体分开,请考虑使用单独的上下文。
或者,考虑保存“非托管”实体,但是使用其他布尔属性unmanaged
标记它们。然后,您可以随时清除它们,或在提取时忽略它们。
答案 1 :(得分:0)
可以在没有上下文的情况下创建NSManagedObject。 Marcus Zarra写了in this SO-answer。提示:如果您尝试使用nil-context创建对象,则不会调用awakeFromInsert:
。