2012-07-18 74 views
4

我一直在使用核心数据,但我只是问自己一个问题,我自己总是创建一种本地商店类,从中我管理核心数据模型,这将是一个单一类,它有对托管对象上下文的引用,我有创建新的托管对象,删除对象,保存等方法... 而我的托管对象的子类实际上只是模型。核心数据逻辑分布?

但我经常与其他人的项目工作过,有时还有其它开发人员往往更多的逻辑添加到类方法的形式被管理对象的子类,并有一个非常简单的或有时无核心数据“包装”类在所有。

例如,我通常会做这样的事情:

User *me = [[MyDataStore getInstance] createUserWithName:@"Daniel"]; 

而其他相当有:

User *me = [User userWithName:@"Daniel"]; 

显然是后者更漂亮,在我看来更多的人友善,但一最终可能会产生大量碎片化的代码,但另一方面,我的解决方案意味着您有一个非常大的文件,一旦文件超过一定长度,它就不是很好。

我想知道其他人是否可以分享他们的观点。谢谢。

回答

4

从MVC的角度看,在NSManagedObject子类中放置逻辑代码是更正确的事情。就我个人而言,我觉得这是一个更合乎逻辑的事情,即此代码创建一个新的User实例,所以我将它放在User类中。

在一个实用的层面上,我习惯讨厌把逻辑代码放在我的NSManagedObject子类中,因为如果我修改了我的模型,它会全部消失,但是我现在使用的是MoGenerator,它看起来很关键,我不必担心我的自定义逻辑被覆盖。

我倾向于尝试和利用CoreData这些天的另一件事是抽象实体。它们不仅非常适合简化你的模型,而且也适合你的定制逻辑,我的意思是它基本上只是围绕CoreData进行子类化。

只是我的意见和目前对我而言, 希望它有助于某人,期待任何其他贡献!

+2

通过将自定义代码放入单独的Objective C类别中,可以避免您的自定义代码被生成的类取代的问题。 – Roger 2012-07-18 07:13:00

+0

类别听起来很有趣。谢谢你的想法Steffan,如果我们在推特上分享这个问题或许可以得到更多的意见,我真的认为这是一个有趣的问题。 – Daniel 2012-07-18 14:37:48

+0

厌倦了等待更多意见,他们不会来......你不如得到声望 – Daniel 2012-08-03 15:00:37