根據你的問題,你不需要有多個上下文,然後與主控者分享他們的改變。只使用您在不同控制器之間共享的主上下文。通常這是可以的。
這裏有兩種方法是有效的。
第一種方法意味着您可以通過控制器爲「代碼注入的」排序中的上下文。
controller1.masterContext = [self masterContext];
其中masterContext
是strong
屬性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以獲得完整的說明。
對downvoter,請在downvote之前提供意見。 Downvote機制在那裏迫使作者改進問題或答案。所有這些都旨在幫助整個社區。謝謝。 –