2

我想将一些自定义方法直接放入每个 NSManagedObject 中。想想,“计算字段”:这些方法根据实体上的持久值提供只读计算值 - 这与这个问题相同。

我正在使用 Xcode New File... Wizard 为我的每个实体创建 NSManagedObject 子类。我正在尝试从系统为我自动创建访问器中受益。例如:

核心数据实体:“站点”

@interface Site : NSManagedObject

当我继续向我的实体添加新属性时,我正在使用向导替换它们对应的 NSManagedObjects。当每个文件被替换时,我的自定义方法都会丢失。

我是否应该在别处创建自定义方法以便继续使用向导?或者,我应该保留 NSManagedObject 上的方法并手动为新属性添加访问器吗?还有另一种方法吗?

4

2 回答 2

3

在您的 NSManagedObject 子类上创建一个类别:

  • 在“新建文件...”对话框中,选择“Objective-C 类别”。
  • 在“站点”上创建一个类别“CustomMethods”。
  • Xcode 将创建文件Site+CustomMethods.h ,为相应的实现声明@interface Site (CustomMethods), 和Site+CustomMethods.m 。
  • 将您的自定义方法添加到类别中。

当您在 Xcode 中重新创建Site.mSite.h时,这些文件不会被覆盖。

所有类别方法都可以像在类本身中声明一样使用。在类别中唯一不能做的就是添加新的实例变量。

于 2012-07-27T20:03:02.540 回答
0

一旦我使用向导创建了初始托管对象,我通常会手动更改它们。

另一种方法是创建向导生成的类文件的子类并使用它们。当它们重新生成时,您的所有自定义代码都在子类中,而不是被覆盖的类文件。

于 2012-07-27T19:57:13.453 回答