0

我一直在尋找幾天,並繼續從閱讀蘋果文檔和各種教程學習,但有一個問題,我似乎無法得到處理。UITableView - 延遲更新使用部分時

我有一個簡單的應用程序,跟蹤項目,與一個單一的核心數據實體(ProjectEntry)。目前所有的屬性都是字符串。這基本上是Paul Hegarty的核心數據講座和Tim Roadley的網絡教程的結合。

我可以添加和保存實體並使用數據填充tableview。目前,我正在使用Hegarty在演講中提供的CoreDataTableViewController子類。我提到,因爲...

當我的UITableView沒有分成幾個部分時,添加一個新條目後,UI中會出現「即時」的新信息。但是,當我添加部分(通過sectionNameKeyPath)時,新數據仍然保存,但只有刷新幾次後才顯示,或者在刷新前等待30秒(通過Hegarty提供的拉到刷機制)。

tableview委託方法似乎都工作,如NSFetchedResultsController的方法。過去使用Stanford/Hegarty CoreDataTableViewController子類已經取得了成功,並且我通過實現文件本身瞭解了大量的內容。

控制器嵌入在導航控制器中,託管對象上下文通過prepareForSegue方法在控制器之間傳遞。一些簡單的日誌顯示我最初通過UIManagedDocument獲得的託管對象上下文正在成功傳遞。

我試過[self.tableview reloadData]和/或beginUpdates/endUpdates viewWillAppear,但延遲仍然存在。

將tableview分成導致延遲的部分是什麼?在tableview上調用reloadSections是否必要?就像我說的,這些條目與Core Data一起保存,並且fetchedResultsController會立即填充非分段tableview ...

這可能是一些顯而易見的事情,我只是想念,但任何幫助將不勝感激。

+1

如何添加部分。您的症狀似乎表明數據正在保存在另一個上下文中,並最終在UIManagedDoc保存後流入綁定到FRC的上下文中。 –

+0

我使用插入上述方法的sectionNameKeyPath部分的模型中的字符串值來提取(initWithFetchRequest)時添加了部分。你說的很有趣,因爲UIManagedDocument是在初始視圖控制器(而不是tableview)中打開/使用的。 tableview是使用UIManagedDoc中的managedObjectContext的後續視圖控制器。我仍然不確定該做什麼,但是你讓我思考。謝謝! – vapul

+0

我應該提到當tableviewcontroller調用performFetch並且使用initWithFetchRequest時添加了這些部分。 – vapul

回答

0

上面的Warren Burton的評論讓我重新檢查了我的託管對象上下文行爲在通過prepareForSegue方法在視圖控制器之間傳遞時是否一致。

因此,正如我在上面最後的評論中提到,它似乎解決一時的問題:

從上面: 初始視圖控制器是不可實現代碼如下,它可以原因請看一個UIViewController添加ProjectEntry,或繼續到列出已保存項目條目的UITableViewController。此初始視圖控制器創建或使用UIManagedDocument。通過設置一個單行檢查來查看在這個初始視圖控制器的viewWillAppear方法中是否使用了UIManagedDoc,在tableview中顯示新節數據的「延遲」似乎停止了。在說問題解決之前,我會再測試一次。通過這種方式,共享託管對象上下文似乎更好地通過託管文檔「綁定在一起」 - vapul