2009-07-24 109 views
3

我有很多方便的方法来为我的Core Data实体执行提取操作。例如,返回当前活动活动的方法,或两个完成的活动之间的时间间隔,或者是一个默认客户端(如果有)。我也有方便的方法来初始化和添加具有各种属性的实体。我应该在哪里保存核心数据提取和便捷方法?

我有一个数据模型,单例类是去到类初始化核心数据和获取的NSManagedObjectContext等

是更好地把这些方便的方法在数据模型中单件类,或每个相关实体的子类都是类方法?我不认为这里有一个真正的道路,但我希望看到意见和经验。谢谢!

回答

5

我会将它们与它们所在的类联系起来。为此,我将首先为您的实体生成类文件(选择编辑器中的实体,然后选择File> New File> NSManagedObject)。

然后,只是把在类文件的方法,如:

+ [Activity activeActivities]; 
- [Activity intervalToActivity:(Activity *)other]; 
+ [Activity activityWithVariousAttributes]; // (plus maybe a corresponding initWithVariousAttributes)

的一般规则我给的是,如果该方法在一个特定的类工作,然后把方法在该类。 =)

1

要展开什么戴夫说,你可以在你方便的方法添加到某个类别(例如FooManagedObject + Convenience.h/.M),所以,当你改变你的数据模型,并重新生成NSManagedObject子类(即FooManagedObject.h/.m),你不会最终破坏你的便利方法。

另一种选择是使用mogenerator而不是类别,维护一个私有的(自动生成的)NSManagedObject子类和自动生成的子类的公共子类,您可以将自己的方法添加到该子类中。通过这种方式,当您更改数据模型时,只会重新生成私有子类,但您的便捷方法所在的子类不会受到影响。与简单地使用类别相比,设置更多的工作,但它增加了一些额外的便利方法,非常值得设置。