2013-01-04 135 views
0

我正在開發一個項目,其中有許多視圖控制器,每個視圖控制器都基於核心數據和UITableView。我有保存問題,當我們編輯表格時,我們應該存儲當前的信息和數據。接下來,如果用戶點擊「保存」按鈕,所有內容都應該放入的appDelegate類(並且只有這樣,所以我們不能在masterContext中保存動態!)。存儲臨時核心數據上下文並保存

我的問題是以下。如果用戶點擊保存按鈕將保存按鈕傳遞給masterContext,我該如何保存當前數據?我應該創建temporaryContext並將它與masterContext合併?

感謝您的回答。

+0

對downvoter,請在downvote之前提供意見。 Downvote機制在那裏迫使作者改進問題或答案。所有這些都旨在幫助整個社區。謝謝。 –

回答

0

根據你的問題,你不需要有多個上下文,然後與主控者分享他們的改變。只使用您在不同控制器之間共享的主上下文。通常這是可以的。

這裏有兩種方法是有效的。

  • 接力棒方法
  • 創建一個單獨的類,你可以檢索上下文

第一種方法意味着您可以通過控制器爲「代碼注入的」排序中的上下文。

controller1.masterContext = [self masterContext]; 

其中masterContextstrong屬性controller1

第二種方法意味着在您設置核心數據堆棧的類(通常是應用程序委託)中,您提供了一個readonly property,通過它您可以訪問該上下文。您還可以提供一個save方法來保存上下文。我不太喜歡將所有設置的代碼放在應用程序委託中,所以我通常爲此創建一個單例類。 DCTCoreDataStack就是這樣的一個例子。

@MarcusZarra PASSING AROUND A NSMANAGEDOBJECTCONTEXT ON IOS也顯示了一些技術來傳遞上下文。

如果您有興趣,您還可以在Core Data中使用新的iOS 5 API,並設置一個在專用隊列(NSPrivateQueueConcurrencyType)中工作的主上下文和一個在主線程(NSMainQueueConcurrencyType)上工作的子上下文。這被稱爲父/子上下文。在主線程中完成的更改將傳遞給主存儲器,以便將更改保存在CD存儲區中。這裏有一些筆記。 Core Data Release Notes。另外請看Multi-Context CoreData以獲得完整的說明。