我有一些使用Xcode生成的NSManagedObject的子类。我给这些类写了一些验证码(validateForInsert:
),但每次更新数据模型并重新生成子类时,所有这些验证码都会消失。有些人建议我使用类别来扩展这些类而不是在其中编写代码,但根据苹果的文档,用类别覆盖方法是一种非常糟糕的做法,可能会导致未定义的行为。
我还尝试将这些生成的类子类化。我有一个名为DBEntityOne
的生成类,其子类名为EntityOne
。 EntityOne与EntityTwo具有一对一的关系,由DBEntityTwo
(生成)和EntityTwo
表示。但是,每当我尝试将EntityTwo与EntityOne实例关联时,我得到的是DBEntityTwo
而不是EntityTwo
。
那我该怎么办?我应该放弃自动代码生成并自己编写所有实体类吗?
答案 0 :(得分:0)
一些建议......
您可以使用类别(Objective-C)或扩展(Swift)扩展实体类。尽管有Apple的警告,但这通常是安全的。至少,我已经使用了实体类的扩展而没有任何问题。
获得生成的类之后,为新实体字段手动添加属性非常容易。您不需要重新生成类文件只是为了获得一点代码。
如果您使用的是源代码管理系统,则可以重新生成类,然后将重新生成的类与版本化的类合并。这很容易让您保留自定义代码,同时获得生成代码的好处。