1

我有一個令人沮喪的問題,我一直在努力了很長一段時間。更新NSManagedObject導致NSFetchedResultsController刪除

提供一些上下文和細節我有一個iOS UISplitViewController應用程序 - 標準的主/細節的東西。主視圖是一個由NSFetchedResultsController(從SQLite數據存儲加載NSManagedObjects)支持的UITableView。

似乎在發生的事情是,細節視圖中的任何更新(可以定期更新「主記錄」並刷新到NSManagedObject並最終導致SQL數據存儲)會在NSFetchedResultsController上執行DELETE操作。

我認爲這是因爲寫入NSManagedObject屬性導致某種錯誤,這反過來導致NSFetchedResultsController從它的緩存結果集中刪除它。最終結果是記錄從主視圖中'丟失'(例如:UITableCellView從主UITableView中刪除)。

的問題是,我不希望這樣的事情發生,我不知道如何阻止它......

有沒有人遇到過這個問題之前,並可能提供一些指導?

由於提前, 本

回答

0

我不知道這是否回答你的問題,但我想通了,解決我有一個類似的問題。我用每個對象名稱的第一個字母對我的Core Data支持的UITableView中的對象進行排序。在我閱讀的任何教程中,它告訴我將一個臨時屬性'NameInitial'放在NSManagedObject子類中,我將用該對象的名稱的第一個字母填充。然後,我使用該屬性作爲我的sectionNameKeyPath將對象排序到我的UITableView中的適當部分。

我在每個單元格上都有一個按鈕,它更新了與該單元格關聯的對象的屬性,並且在我的didChangeObject委託函數中正確接收了NSFetchedResultsChangeUpdate消息。但是,有時,單元格會被刪除,我會收到NSFetchedResultsChangeDelete消息,沒有明顯的原因。

然後我注意到被刪除的單元有(null)作爲其關聯對象的NameInitial屬性。我忘記了暫時的NameInitial只存儲在內存中,所以不一定保持一直。每次更新單元格後,手動重新填充NameInitial屬性後,刪除操作就會停止。所以,如果你使用瞬態屬性來幫助排序/分割你的UITableView,這可能是你的問題。

希望這會有所幫助,祝你好運! -Rick

相關問題