2010-06-29 68 views
1

你必須每個線程有一個,但除此之外......你應該有更多?多吃有害嗎?例如,我很想構建我的應用程序,每個選項卡都有一個NSManagedObjectContext,處理出現在特定選項卡上的整體持久性存儲的子集。每個線程有多個NSManagedObjectContext實例可以嗎?

這樣,我可以讓選項卡GUI在「其」上下文中聽取notificataions,並忽略其他人。異步網絡調用一次只會更改一個選項卡的上下文。

(注:不使用NSFetchController因爲在課前的iOS 3.2主要錯誤的,這是一個3.0+應用程序)

有我誤解了如何使用的NSManagedObjectContext?如果是這樣,任何人都可以指出使用額外的NSManagedObjectContext實例的「好」/「壞」原因?

更新:這對分立的上下文工作正常,但當我試圖推斷在一組數據上使用多個上下文來處理臨時更改時,這一切都變得非常糟糕:c.f.關於該主題的問題:How to make/use temporary NSManagedObjects?

+0

經過一番實驗後,我注意到蘋果已經「忘記」在其API中包含幾個關鍵方法。例如你如何合併上下文?答:除非產生「假」NSNotifications,否則你不能。笨。我不確定蘋果是否希望你避免NSManagedContext(看起來很奇怪),或者只是沒有考慮到他們自己的API設計的後果。 – Adam 2010-06-30 01:25:29

回答

0

這是可能的,但是請注意,您必須處理合適的合併並確保您的上下文之間沒有陳舊的數據。

+0

我的計劃是在上下文之間沒有共享數據;每個選項卡都有一個唯一的數據存儲子集(相同的數據類型,只是不同的數據子集)。 這似乎可能是蘋果想要的......也許......但是再次,他們似乎沒有提供答案,所以我不知道這是否會出現可怕的錯誤! – Adam 2010-06-29 22:25:01

+0

@亞當鑑於這些限制,你應該很好地使用幾個上下文。 – 2010-06-29 22:39:19

相關問題