【问题标题】:Debugging CoreData Exceptions调试 CoreData 异常
【发布时间】:2012-03-15 10:14:56
【问题描述】:

在尝试从 UITableView 中删除对象时,我遇到了间歇性且难以跟踪 CoreData 异常的情况。

在 SO 上有很多关于此的讨论,但它们都特定于各种实现,并且很难应用于您自己的最佳实践。我看到的教程对设置很有帮助,但在教你解决问题方面不太好。

调试/解决此类 CoreData 错误的最佳方法是什么?正确执行的预期流程是什么?

类似这样的错误:

严重的应用程序错误。从委托中捕获了异常 调用期间的 NSFetchedResultsController -controllerDidChangeContent:。无效更新:第 0 节中的行数无效。现有节中包含的行数 更新后(3)必须等于包含的行数 更新前的那个部分(3),加减行数 从该部分插入或删除(0 插入,1 删除)和加上 或减去移入或移出该部分的行数(0 移动 入,0 移出)。与 userInfo (null)

【问题讨论】:

    标签: ios cocoa-touch uitableview core-data


    【解决方案1】:

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

    【讨论】:

    • 谢谢,是的,我知道了——所有这些都告诉我,我在 [self.tablview endupdates] 上遇到了一个错误,到目前为止它并不是很有用。
    【解决方案2】:

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

    我知道这不是您要问的确切问题,但“最佳方法”问题可能有点笼统,无法得到一个好的单一答案。

    【讨论】:

    • 这个问题实际上是由一个多余的 FetchedResultsController 和 UITableView 设置为它的委托引起的(这里有一个讨论:stackoverflow.com/a/9755379/459116),但我仍然希望将来有一些调试策略,而不是那些具体到这个案例。 CoreData 一直调试有点麻烦!
    【解决方案3】:

    问题实际上是由一个多余的 FetchedResultsController 将 UITableView 设置为它的委托引起的(这里有一个讨论:stackoverflow.com/a/9755379/459116

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2011-09-11
      • 1970-01-01
      • 2010-10-09
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多