2012-09-30 47 views
0

我有一個帶ARC的故事板,支持ios5 +的iPad應用程序。NSFetchedResultsController與已更改記錄數衝突

我有一個獨立使用NSFetchedResultsController的VC。 VC有兩個表格指向兩個不同的實體。 我有單個記錄添加,更改,刪除和移動在這個VC上正常工作的行。

我現在介紹了一項新功能,使用戶能夠快速添加多行到這些tableviews。 我通過從VC提供一個segue(模態)到一個新的VC(讓我們稱之爲quickAddVC)來做到這一點。 用戶在quickAddVC上輸入數據,然後我退回(模態)到原始VC。 我保存新的記錄(通過替代調用)之前(我相信)再次爲VC設置NSFetchedResultsControllers(我將它們設置爲ViewDidUnload中的nil)。

但是我不斷收到這個不匹配的錯誤。 不管怎樣,無論我添加多少記錄,它都會不斷註冊從quickAddVC發生的插入次數爲1次插入,並以某種方式記住在執行此比較之前,NSFetchedResultsControllers中有多少記錄。

錯誤:

* Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-2372/UITableView.m:1070

Failure in didChangeObject, name=NSInternalInconsistencyException reason=Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (5) must be equal to the number of rows contained in that section before the update (2), plus or minus the number of rows inserted or deleted from that section (1 inserted, 0 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).

什麼我做錯了還是應該儘量將是有益的任何想法。

我不知道如何讓NSFetchedResultsControllers簡單地忘記它的原始狀態,並重新開始從頭開始,我認爲這解決了我的這個問題。

我還沒有發佈任何代碼,我想我可以發佈很多,如果需要的話,但希望有足夠的這裏來概述設計問題,並得到一些想法。

+0

好的解決了這個問題。 基本上我是在錯誤的地方清理NSFetchedResultsControllers。 通過將它們設置爲零之前,所有工作正常。 我做了一個不正確的假設,假設ViewDidLoad方法在我再次搜索時被調用,ViewDidUnload方法也被調用,但事實並非如此。 – Scoop

回答

1

只需重新發布將問題標記爲已關閉的答案。

好的解決了這個問題。基本上我是在錯誤的地方清理NSFetchedResultsControllers。通過將它們設置爲零之前,所有工作正常。我做了一個不正確的假設,假設ViewDidLoad方法在我再次搜索時被調用,那個ViewDidUnload方法也被調用,但事實並非如此。