我最近在Objective-C中开始编程,现在我正在研究Core Data。但是,我对在Core Data中定义模型本身的确切内容感到困惑。
这就是我的意思:假设我使用图形模型构建器创建了一组具有一组属性的实体。然后我让Xcode为相应的类生成代码。接下来,我想在类中创建一个仅在运行时使用的属性,并且不需要由Core Data存储或检索。所以,我在类中添加了一个变量和一个相应的属性(在实现中合成它)
新属性未在模型构建器中定义,但它是在从NSManagedObject派生的类中定义的。如何处理核心数据?类中列出的属性是在“模型”中定义属性还是只在模型构建器中定义的属性定义模型?
同样,我想在类文件中添加一个基于枚举的属性,当获取或设置时,访问或更改模型中的NSNumber属性。如果没有Core Data将属性视为要存储和检索的属性,我可以这样做吗?
谢谢!
答案 0 :(得分:6)
您可以像为任何其他类一样,为NSManagedObjects生成的代码添加自定义属性(和变量)。这些不会成为模型的一部分,而是在内存中暂时存在。值得注意的是,如果托管对象被释放,那么内存中的值也是如此。
我建议如果您只是为底层数据实现自定义访问器,那么就是在相关托管对象上创建一个类别。在访问器中,您可以访问基础NSNumber并将其转换为您在类别标题中定义的枚举。
如果需要重新生成托管对象的代码,因为模型更改,您只需删除为托管对象生成的类并重新生成它,而无需与您添加的任何自定义代码合并。只要底层存储属性保持不变,您添加的类别将完全相同。
您可以在ADC的Objective-C Programming Language guide找到有关类别的更多信息。