使用Core Data存储自定义对象 - 我在这里缺少什么?

时间:2012-10-18 03:02:46

标签: cocoa-touch core-data

我有一个简单的自定义对象(“Ingredient”),包含实例变量,类方法和实例方法。这个自定义对象在我的应用程序中无情地缠绕在一起。我想使用Core Data存储此自定义对象的实例。根据我的阅读,不鼓励在托管对象中使用实例变量和方法。

所以现在我对如何继续感到困惑。

从类似情况的例子来看,通常的做法是获取结果并将其放入如下数组:

NSMutableArray *array = [managedObjectContext executeFetchRequest:fetchRequest error:&error];

但我不清楚我可以用mutableArray对象做什么。我可以使用自定义对象执行当前要执行的所有操作:修改实例变量,将对象发送到方法等吗?

或者我创建一个“ArchivedIngredient”托管对象,其属性与我的“Ingredient”实例变量匹配,使用我目前的“Ingredient”对象 - 然后在需要时将“Ingredient”转换回“ArchivedIngredient”对象存储在哪里?如果是这样,那怎么办呢?

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

  

根据我的阅读,不鼓励在托管对象中使用实例变量和方法。

我现在不是你的意思,但如果你的意思是你不应该根据你的核心数据实体创建类,那你就错了。您可以使用核心数据检查器为您的实体分配自定义类,并通过选择模型上的实体并使用Xcode的产品菜单查找“Create NSManagedObject Subclass”来创建该类实现的头文件和源文件。这将生成NSManagedObject子类。您可以像其他类一样添加实例方法和类方法。

修改自定义类的属性并希望保存这些更改时,需要获取用于获取对象并调用save方法的托管对象上下文。这将把更改放在持久性存储中。

另请注意,您调用“executeFetchRequest”的方法 NOT 会返回一个可变数组。它返回NSArray的不可变子类,您必须将其视为NSArray。