2009-10-26 86 views
3

我最近开始在Objective-C编程的道路上,现在我正在研究核心数据。但是,我对核心数据中定义模型本身的内容感到困惑。核心数据类与模型

以下是我的意思:假设我使用图形模型构建器创建了一些具有一组属性的实体。然后我让Xcode为相应的类生成代码。接下来,我想在类中创建一个只在运行时使用的属性,并且不需要被Core Data存储或检索。所以,我在该类中添加了一个变量和一个相应的属性(在实现中合成它)

新属性未在模型构建器中定义,但是它是在派生自NSManagedObject的类中定义的。核心数据如何处理?是否在类中列出的属性定义了“模型”中的属性,还是只有在模型构建器中定义的属性定义了模型?

同样,我想添加一个基于枚举的属性到类文件,当get或set时,访问或更改模型中的NSNumber属性。我可以在没有Core Data的情况下将属性视为要存储和检索的属性吗?

谢谢!

回答

6

您可以将自定义属性(和变量)添加到为您的NSManagedObjects生成的代码中,就像其他任何类一样。这些将不会成为模型的一部分,而是成为记忆中的暂时。值得注意的是,如果托管对象被释放,内存中的值也会被释放。

我会建议如果您只是实现基础数据的自定义访问器的提示是要在有问题的托管对象上创建一个类别。在访问器中,您访问底层的NSNumber并将其转换为您的枚举,并在该类别的标题中定义。

如果您需要重新生成托管对象的代码,因为说模型更改,您可以删除为托管对象生成的类,并重新生成它,而无需与已添加的任何自定义代码合并。只要基础存储属性保持不变,您添加的类别将会一直工作。

您可以在ADC上找到更多关于Objective-C Programming Language guide中的类别的信息。