自 1 个月以来,我一直在使用 NSFetchedResultsController 构建应用程序,并在 3.1.2 SDK 上测试该应用程序。问题是我一直在我的应用程序中到处使用 NSFetchedResultsController 并正在开发 3.1.2 版本的 SDK,现在我的客户说我应该使其与 3.0 版本兼容,并且截止日期快到了。
但是每次我更改控制器处理的对象时都会崩溃,应用程序会因非常奇怪的错误而崩溃。
当删除一个部分中的最后一个对象以及当更改使对象喜欢另一个部分时,就会出现问题。
我一直在使用来自 Dave Mark 和 Jeff LaMarche 的“More iPhone 3 Development Tackling iPhone SDK 3”中的示例代码。我还添加了一些更改链接文本 http://www.appleiphonetech.com/chapter-4-and-the-tale-of-the-nsfetchedresultscontroller.html
以下是应用程序崩溃时控制台的示例输出。
*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“更新无效:部分数量无效。”更新后表视图中包含的节数 (1) 必须等于更新前表视图中包含的节数 (2),加上或减去插入或删除的节数(2 个插入,0 个已删除)。
2010-03-14 16:23:29.758 Instaproofs[5879:207] 堆栈:(
807902715,
7364425,
807986683,
811271572,
815059090,
815007323,
211023,
4363331,
810589786,
807635429,
810579728,
3620573,
3620227,
3614682,
3609719,
27337,
810595174,
807686849,
807683624,
839142449,
839142646,
814752238
)
如果我知道 NSFetchedResultsController 有这么多 bug,我就永远不会使用它。
所以基本上我需要 NSFetchedResultsControllerDelegate 才能在 3.0 及更高版本的 SDK 上正常工作。
如果有人帮助我找出我做错了什么,这将是我的救星。