2013-05-16 35 views
0

我有一個單身數據控制器來容納一個對象數組。例如香蕉問題看我的解決方案:singelton dataController banansArray核心數據上下文和單身數據控制器

現在我想將香蕉數組保存爲持久狀態。這個核心數據教程:core data - store images讓我對Core Data有了一個很好的總體理解,在將我的數據Controller更改爲singleton之前,我可以將它包含在我的應用程序中。

現在什麼是最好的?

我是否需要將生成的核心數據堆棧在應用程序委託中移動到管理香蕉數組的單一數據控制器?或者,我是否必須像使用Core Data模板生成的Master-View控制器一樣在應用程序委託中設置單例的上下文?

在那種情況下,我該如何在appDelegate中設置上下文? 這並不在AppDelegate的應用didFinishLaunchingWithOptions:

DataControllerSingleton *dataController; 
dataController.managedObjectContext = self.managedObjectContext; 

在beerDataModel提供的示例ManagedObjectCode工作(它workes爲模板馬西德威)是:

if (_mainContext == nil) { 
    _mainContext = [[NSManagedObjectContext alloc] init]; 
    _mainContext.persistentStoreCoordinator = [self persistentStoreCoordinator]; 
} 
+0

我已經在這篇文章中看到了答案:http://stackoverflow.com/questions/6622699/singleton-managedobjectcontext請隨時進一步評論,如果它是明智的,以這種方式使用singleton和coreData – djcj

+1

個人選擇。我將它轉移到單身人士,所有權和管理都在一個地方。單例也更容易在需要訪問模型的類中獲得引用(與應用程序委託相比)。 – Wain

回答

2

根據你的問題,我認爲這是一個個人選擇。例如,在我的項目中,我更願意維護用於管理核心數據堆棧的單例類,並在整個應用程序中使用它。我更願意將應用程序委託清理乾淨。

無論如何,現在如果您使用Core Data,那麼管理對象數組的那個單身人士已經不再有用了。通過核心數據,您可以獲得可從持久性存儲中獲取的對象圖形(例如)。顯然你需要正確設計你的模型(實體,關係等)。就你而言,例如,具有正確屬性的Banana實體是正確的選擇。

要看到行動中的單身人士課程請看@BenSheirman的BeerDataModel.h/.m。這是一個非常好的方法。它可以像下面一樣使用。

NSManagedObjectContext *mainContext = [[BeersDataModel sharedDataModel] mainContext]; 

P.S.在BananasDataModel中更改BeersDataModel或更喜歡哪個名稱。

+0

謝謝你的信息!我對你的代碼建議放在哪裏感到困惑? BeerDataModel似乎使用: - (NSManagedObjectContext *)mainContext if(_mainContext == nil){mainId = [[NSManagedObjectContext alloc] init]; _mainContext.persistentStoreCoordinator = [self persistentStoreCoordinator]; } – djcj

+0

@djcj不客氣。但我無法理解你的意思。你能編輯你的問題並把請求放在那裏嗎?在此期間,如果你想投票...;) –

+0

我只是想知道在哪裏把你的代碼建議?我無法在beersDataModel中找到該行代碼。但是我認爲我已經實施了,但我確實有一個新問題。非常感謝,如果你看看它:http://stackoverflow.com/questions/17429203/nsmanaged-context-threads?noredirect = 1#comment25347242_17429203 – djcj

相關問題