我有许多便捷方法可以为我的核心数据实体执行提取。例如,返回当前活动活动的方法,或两个已完成活动之间的时间间隔,或默认客户端(如果有)。我还有方便的方法来初始化和添加具有各种属性的实体。
我有一个数据模型单例类,它是初始化Core Data和获取NSManagedObjectContext等的首选类。
将这些便捷方法放在数据模型单例类中,或者作为类方法放在每个相关实体子类中是否更好?我不认为这里有一个真正的方式,但我想要意见和经验。谢谢!
答案 0 :(得分:5)
我会将他们与他们所在的班级联系起来。为此,我首先为您的实体生成类文件(在编辑器中选择实体,然后选择文件>新文件> NSManagedObject)。
然后,只需将方法放在类文件中,例如:
+ [Activity activeActivities]; - [Activity intervalToActivity:(Activity *)other]; + [Activity activityWithVariousAttributes]; // (plus maybe a corresponding initWithVariousAttributes)
我给出的一般规则是,如果方法对特定类进行操作,则将该方法放在该类中。 =)
答案 1 :(得分:1)
要扩展Dave所说的内容,您可以将便捷方法添加到类别(例如 FooManagedObject + Convenience.h / .m ),以便在更改数据模型并重新生成NSManagedObject子类时(即 FooManagedObject.h / .m ),你最终不会破坏你的便利方法。
另一种选择是使用mogenerator而不是类别,维护一个私有(自动生成的)NSManagedObject子类和自动生成的子类的公共子类,您可以添加自己的方法。这样,当您更改数据模型时,只会重新生成私有子类,但是您的方便方法所在的子类保持不变。与简单使用类别相比,设置工作更多,但它增加了一些额外的便利方法,非常值得设置。