如何扩展核心数据实体类

时间:2015-02-03 04:05:22

标签: ios core-data nsmanagedobject

我有一些使用Xcode生成的NSManagedObject的子类。我给这些类写了一些验证码(validateForInsert:),但每次更新数据模型并重新生成子类时,所有这些验证码都会消失。有些人建议我使用类别来扩展这些类而不是在其中编写代码,但根据苹果的文档,用类别覆盖方法是一种非常糟糕的做法,可能会导致未定义的行为。

我还尝试将这些生成的类子类化。我有一个名为DBEntityOne的生成类,其子类名为EntityOne。 EntityOne与EntityTwo具有一对一的关系,由DBEntityTwo(生成)和EntityTwo表示。但是,每当我尝试将EntityTwo与EntityOne实例关联时,我得到的是DBEntityTwo而不是EntityTwo

那我该怎么办?我应该放弃自动代码生成并自己编写所有实体类吗?

1 个答案:

答案 0 :(得分:0)

一些建议......

  1. 您可以使用类别(Objective-C)或扩展(Swift)扩展实体类。尽管有Apple的警告,但这通常是安全的。至少,我已经使用了实体类的扩展而没有任何问题。

  2. 获得生成的类之后,为新实体字段手动添加属性非常容易。您不需要重新生成类文件只是为了获得一点代码。

  3. 如果您使用的是源代码管理系统,则可以重新生成类,然后将重新生成的类与版本化的类合并。这很容易让您保留自定义代码,同时获得生成代码的好处。