我应该在哪里保留Core Data提取和便捷方法?

时间:2009-07-24 21:09:29

标签: iphone objective-c cocoa core-data

我有许多便捷方法可以为我的核心数据实体执行提取。例如,返回当前活动活动的方法,或两个已完成活动之间的时间间隔,或默认客户端(如果有)。我还有方便的方法来初始化和添加具有各种属性的实体。

我有一个数据模型单例类,它是初始化Core Data和获取NSManagedObjectContext等的首选类。

将这些便捷方法放在数据模型单例类中,或者作为类方法放在每个相关实体子类中是否更好?我不认为这里有一个真正的方式,但我想要意见和经验。谢谢!

2 个答案:

答案 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子类和自动生成的子类的公共子类,您可以添加自己的方法。这样,当您更改数据模型时,只会重新生成私有子类,但是您的方便方法所在的子类保持不变。与简单使用类别相比,设置工作更多,但它增加了一些额外的便利方法,非常值得设置。