2

我对 coredata 有一个非常烦人的问题。我有一个 NSManagedObject 子类,即“客户”,一切都很好。有时我需要在 coredata 堆栈之外创建一个新客户,只有在某些情况下我需要保存它。

我知道我可以使用 NSUndomanager,但这似乎不是一个好主意。

现在我有两个类 Customer_managed(NSManagedObject 的子类)和 Customer_unmanaged(NSObject 的子类)。在 Customer_unmanaged 我添加了一个 -(void)save 方法,但这两个类非常耦合,我正在寻找一个最佳模式。

谢谢

4

2 回答 2

0

你正在以错误的方式解决这个问题。您应该始终使用托管对象上下文来创建托管对象。如果要丢弃它,只需在保存前删除该对象,它就永远不会触及持久存储。

如果您想将这两个实体分开,请考虑使用单独的上下文。

或者,考虑保存“非托管”实体,但用额外的布尔属性标记它们unmanaged。然后,您可以随时清除它们或在获取时忽略它们。

于 2012-11-02T11:26:14.770 回答
0

可以在没有上下文的情况下创建 NSManagedObject。Marcus Zarra在这个 SO-answer 中写道 。一句忠告:如果你试图创建一个带有 nil-context 的对象,awakeFromInsert:将不会被调用。

于 2012-11-02T20:14:01.603 回答