首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFetchedResultsController崩溃

NSFetchedResultsController崩溃
EN

Stack Overflow用户
提问于 2009-09-13 13:16:04
回答 1查看 1.8K关注 0票数 1

以下步骤将导致NSFetchedResultsController中的崩溃。

  1. I尝试将第一个元素添加到NSFetchedResultsController支持的TableView中。
  2. 创建一个临时MO对象并显示一个Modal视图窗格以添加新对象。在Add Sheet (一个Modal视图控制器)上,我按Cancel button丢弃新元素。在CancelAction回调for Cancel按钮中,
  3. 删除了我创建的新临时对象。

< code >H19这里的代码与用于核心数据的苹果示例代码完全类似。只有当我尝试添加第一个元素时,我拥有的唯一额外代码是对添加表后的dismissed.

  1. The reloadData的调用,因为它与NSFetchedResultsController.

中的错误节计数有关。

这将导致如下所示的崩溃。如果删除对reloadData的冗余调用,则无法看到崩溃。如果我向菜谱示例代码数据添加一个reloadData调用,那么崩溃也会发生。

这是已知的NSFetchedResultsController问题吗?

09-09-13 18:22:45.600累西比斯14926:20b *终止应用程序由于非正常异常'NSRangeException',原因:'* -NSCFArray objectAtIndex::index (0)越界(0)‘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-13 17:49:18

正如您自己发现的,您不应该使用tableView reloadData,因为您可能正在使用NSFetchedResultsController委托方法。

代码语言:javascript
复制
– controllerWillChangeContent:
– controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
– controller:didChangeSection:atIndex:forChangeType:
– controllerDidChangeContent:

这些方法实际上负责在添加、删除或修改对象时更新表视图。因此,当您添加对tableView reloadData的调用时,会发生两个不同的线程都在访问/修改您的表视图。这将导致您正在经历的崩溃。

如果您没有使用委托方法,那么崩溃是由于代码中的其他原因造成的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1417721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档