2013-08-29 68 views
1

在我的視圖控制器中,我有一個使用NSFetchedesultsController作爲數據源的表視圖。我必須在後臺線程中使用另一個NSManagedContext實例從服務器加載數據。合併前景上下文和後臺上下文後,我需要反映表視圖中的更改,以便重置NSFetchedResultsController(以便它將再次獲取新到達的數據),然後重新加載表視圖。在數據源與後臺合併後,UITableView不會重新加載NSManagedObjectContext

這很奇怪,似乎我的表視圖不會重新加載,直到幾秒鐘後(有時更長)。我相信這不是因爲抓取,因爲當我滾動表格視圖時,新的數據立即出現。

任何建議如何解決這個問題?

在此先感謝!

回答

1

我原來是我的一個後果,不知道通知回調函數的調用方式。我在NSManagedObjectContextDidSaveNotification回調函數中重新加載我的表格視圖。當我檢查這個函數中的哪個線程時,我發現這個線程運行在我假設的主線程以外的另一個線程上。所以我使用GCD回到主線程並解決問題。

1

獲得數據後並創建管理的對象,那麼你需要imediately保存backgrond背景下,這些對象將合併到父上下文,你可以仔細檢查,父上下文中所做的任何更改 [快捷hasChange] [背景updatedObjects] [上下文插入對象] 保存的對象仍然在內存中,您需要重置背景上下文將其清除

0

保存操作應該在子上下文的專用隊列上進行,所以你不必聽通知,嵌套塊等待所有事情完成並重新獲取。

相關問題