2012-03-15 103 views
2

我在尝试从UITableView中删除一个对象时越来越断断续续,难以跟踪CoreData异常。调试核心数据异常

有很多关于SO的讨论,但它们都是针对各种实现的,并且很难应用到您自己的实践中。我看过的教程对设置很有帮助,但不是很好地教你解决问题的方法。

什么是调试/问题的最佳方法解决此类型的CoreData错误,以及正确执行的期望流程是什么?

象这样的错误之一:

严重的应用程序错误。在调用 -controllerDidChangeContent:时,NSFetchedResultsController的委托人 发现了一个异常。无效更新:部分0中的行数无效。更新(3)后现有部分 中包含的行数必须等于更新前(3)部分的 中包含的行数,加或减(0插入,1删除)和加上 或减去移入或移出该部分的行数(0移动了 in,0移出)的行数 。 with userInfo(null)

回答

0

您是否尝试过使用异常断点? - 它应该告诉你导致你的异常的特定行代码。 要添加一个到xcode中的断点导航器,请点击导航器左下角的“+”并点击添加异常断点。

+0

谢谢,是的,我有 - 所有这些告诉我的是,我在上一个错误[self.tablview endupdates]到目前为止还没有很好用。 – glenstorey 2012-03-17 23:29:53

0

我认为这里发生的一切是,你需要调整NSMutableArray(或其他),以便删除对象,告诉NSFetchedResultsController刚刚被删除。您之前有3个对象,您表示其中一个已被删除,然后期望0节中的行现在应该包含2个,而不是它仍然检测到的3个。

我意识到这不是你问的确切问题,但“最好的方法”的问题可能有点普遍,以获得一个很好的单一答案。

+0

这个问题实际上是由一个多余的FetchedResultsController和UITableView作为它的委托(这里有一个讨论:http://stackoverflow.com/a/9755379/459116)引起的,但我仍然希望有一些策略在将来进行调试,而不是那些特定于这种情况的那些。 CoreData一直是一个调试的麻烦! – glenstorey 2012-03-18 19:23:59