我把我的頭髮撕掉,試圖讓它工作。NSURLConnection和NSFetchedResultsController
我已經看過所有與StackOverflow相關的問題,但我不能得到最後一步的工作!
我有一個NSFetchedResultsController
顯示來自Core Data的數據。這一切都完美。當有數據時,它會顯示數據,一切正常。
但是,我有一個異步更新,從一個在線服務器拉下更多的數據並將其保存到核心數據。
我想要發生的是,NSFetchedResultsController
拿起這些更新,然後顯示它們(即將它們動畫到當前顯示的tableView上)。
的設立我此刻是像這樣................
感謝這兩個反應這一點,我有另一個去嘗試爲了使這個工作,但我仍然沒有看到「實時」的更新。
我想我會去解釋我現在在哪裏。我發現了一些我最初設置的問題,現在我已經修復但仍然沒有任何問題。
好了,第一類和發生了什麼地方...
[CLASS =的AppDelegate]
[有managedObjectContext(主要方面)以及持久性存儲等..]
[方法= mergeChanges :notifiaction 此使用GCD找回到mainThread和不mergeChangesWithObjectblahblah]
[CLASS = NetworkDataClass]
[這有在初始化自己的ManagedObjectContext時生成(在主線程)
[Method = saveContext
] 1.將AppDelegate添加爲bgContext的didsvitotification的觀察者。
2. SaveContext。
3.刪除的AppDelegate作爲觀察員(我知道,觀察工作,因爲我在當將保存停止AppDelegate的斷點。)
[方法= getDataFromOnline(而不是實際的名字,但你得到的要點)
1.將GCD放入bg線程。
2.創建一個NSURLRequest。
3.同步運行請求。
4.將數據放入類上下文中。
5.運行自saveContext]
[類= tableViewClass]
[是否已經和的tableView NSFetchedResultsController還使用NSFetchedResultsControllerDelegate]
[方法= viewWillAppear中
在我的網絡類單 1.運行getDataFromOnline方法]
我有一些默認數據在那裏,以確保它正在顯示,當我進入tableViewClass(詳細上述),我可以正確看到正確的排序順序正確的部分標題等數據...所以我可以清楚地看到fetchedresultscontroller正在工作。
我也可以看到(帶有斷點)它正確觸發了getDataFromOnline方法。我可以看到有數據進入,我可以看到它是通過我的ManagedObject子類添加的,這一切都發生在bgthread中。
我也可以看到,當它保存時,AppDelegate正常運行其mergeChanges函數。
我無法看到的唯一的事情就是正在用新數據更新表格。
如果我popToRootViewController並返回到我的表然後繁榮所有新的數據在那裏,所以我知道合併已經通過和新的數據已被添加和合並,但它只是沒有出現在合併時間。
有什麼我失蹤了嗎?
我需要在表上運行reloadData嗎?我是否需要從fetchedresultscontroller中啓動「重新讀取」或其他內容?
現在真的在掙扎着。
感謝您提供任何(更多)幫助。
我相信'NSFetchedResultsControllerDelegate'方法實際上是需要實施更新監控的方法。另外 - 嘗試使用視圖控制器作爲觀察者來管理上下文通知。 – Eimantas
好的,抱歉再次更新。我剛剛發現委託方法被調用,它們在mainThread上。但是仍然沒有什麼事情發生在tableView上。可能需要更多的研究。 – Fogmeister
啊!剛剛發現它(我認爲)myTableView ivar在通過委託方法時爲零。嗯...... – Fogmeister