2012-07-18 72 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