读取 NSFetchedResultsController 的 fetchedObjects 属性时出现 EXC_BAD_ACCESS 错误(仅在模拟器上)

Posted

技术标签:

【中文标题】读取 NSFetchedResultsController 的 fetchedObjects 属性时出现 EXC_BAD_ACCESS 错误(仅在模拟器上)【英文标题】:EXC_BAD_ACCESS error (only on simulator) when reading fetchedObjects property of NSFetchedResultsController 【发布时间】:2015-03-03 17:01:53 【问题描述】:

奇怪的是,这个问题只发生在 ios 模拟器上。

在我进行更改并保存我的数据,然后尝试访问控制器的 fetchedObjects 后,我收到了错误的访问错误。

即使我只是尝试检查 fetchedObjects 是否为零,我也会获得 EXC_BAD_ACCESS 访问权限。控制器肯定存在,我可以打印它的描述或例如 fetchRequest 属性。只是在访问 fetchedObjects 数组时出错。

我不确定如何调试它,因为它似乎来自 SDK。

任何帮助将不胜感激。

【问题讨论】:

一些代码会有帮助 堆栈跟踪也会有所帮助 我将很快提供堆栈跟踪和代码(以某种方式缩写!)。我刚刚意识到这种崩溃只发生在模拟器上——这很有趣。 您是否尝试过从模拟器中卸载应用然后重新安装? 【参考方案1】:

我经历过类似的事情,我认为这可能是最新的 Xcode 测试版中的一个问题。如果您正在使用批量获取的请求并且在 Xcode 6.3(可能还有 6.2)上,那么我认为这只是一个错误。您将不得不解决它,并希望它很快得到修复。

尝试删除您的批处理,看看是否仍然发生这种情况。

仅供参考,我为此向 Apple 提交了错误报告,如果您也是这种情况,那么您也应该这样做。更多错误报告 = 更多关注!

【讨论】:

你完全正确!救生员。禁用批处理可以修复它。希望它在主要版本中得到解决。非常感谢! 重要提示:fetchRequest.fetchBatchSize = 0 解决了访问 fetchedResultController.sections[].objects 和 fetchedResultController.fetchedObjects 时应用程序意外崩溃的问题。我的应用程序在设备上运行并与 Xcode 断开连接。 (Xcode 7.3 iOS 9.3)【参考方案2】:

我在 iOS 9.1 中遇到过类似的问题。

原来我需要在NSFetchRequest开启批处理并将其设置为大于 fetchedObjects 计数的数字来修复它:

fetchRequest.fetchBatchSize = 1_000_000

【讨论】:

【参考方案3】:

我也遇到了类似的问题。 IOS 10,xcode 8.3.3。在模拟器和真机中。

当我设置 myFetchRequest.fetchBatchSize = 30 // 不是 0

然后在 tableViewController 中。访问 myFetchResutlController.fetchedObejcts 将得到该错误。

【讨论】:

以上是关于读取 NSFetchedResultsController 的 fetchedObjects 属性时出现 EXC_BAD_ACCESS 错误(仅在模拟器上)的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 3 中难以配置 NSFetchedResultsController

如何根据计算的属性过滤来自 NSFetchedResultsController 的结果?

为啥 beginUpdates/endUpdates 会重置表视图位置以及如何阻止它这样做?

为啥读取“从 1 个范围内读取 2972​​ 个标记”比读取“从 126 个范围内读取 238 个标记”更快

nacos 读取配置文件占位符读取不出来

用C#读取XML文件,怎么可以循环读取