我通常會創建一個專用的對象來管理我的核心數據堆棧和相關對象和行爲。這很有用,因爲有很多帶有Core Data的鍋爐板,所以我可以製作一個通用的基礎管理器類,然後爲每個應用程序使用一個子類。我通常稱它爲AppNameDataModel。
我更喜歡隱藏DataModel對象內的託管對象上下文。這會強制應用程序中的其他對象要求DataModel對象訪問核心數據堆棧,以提供良好的封裝和安全性。
通常情況下,我在創建數據模型類方法來爲實體,例如,返回取
-(NSFetchRequest *) entityNameFetch;
...然後在數據模型一個performFetch
方法。在使用中,控制器要求實體獲取,配置提取,然後要求DataModel執行提取並返回結果。您可以編寫生成返回提取方法的代碼,並且執行提取也是鍋爐板。這樣可以節省大量時間,特別是在原型製作時。
對DataModel實例本身的引用可以從控制器傳遞到控制器,但我認爲這是單例模式的有效用法,所以我經常使DataModel成爲單例,並在UIViewController上提供一個類別以供屬性訪問。這意味着我添加到項目中的任何視圖控制器都可以自動訪問DataModel。
這種模式保持一切很好的封裝和模塊化。它可以輕鬆地添加新視圖或在項目之間共享數據模型。初始設置需要一些工作,但一旦擁有基礎級別,未來的使用將大大加速。
感謝BoltClock,我不知道這個功能! – 2010-07-26 14:24:39
可能的重複[在哪裏放置「核心數據堆棧」在Cocoa/Cocoa Touch應用程序中](http://stackoverflow.com/questions/1267520/where-to-place-the-core-data-stack-in -a-可可可可觸摸應用程序) – 2010-07-26 15:19:20