【问题标题】:How to load large data from NSFetchResultController in background thread如何在后台线程中从 NSFetchedResultsController 加载大数据
【发布时间】:2015-03-11 06:40:36
【问题描述】:

我正在使用NSFetchResultController 显示来自核心数据的UICollectionView 中的数据。 UICollectionViewCell 包含表格视图。所以简而言之,UITableView 中显示了非常大量的数据。我也在显示NSFetchResultController 以在该表视图中显示数据。 现在的问题是当我滚动UICollectionView 时,它会从数据库加载数据以显示在UITableView 中。由于数据量很大,所以UICollectionView 的滚动非常不稳定。任何帮助 我虽然我应该将获取请求移动到后台线程,但它开始崩溃应用程序并给出期望

Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSSetM: 0x15722f80> was mutated while being enumerated.'

【问题讨论】:

  • 我建议根据您当前的描述,您有许多问题需要解决。我是否正确理解您在每个集合视图中都嵌入了UITableView?如果是这种情况,我建议您控制 FRC 为每个表视图获取的数据量,也许是表视图空间中可以显示的数据量的两倍?然后为每个集合视图安装一个触发器,当点击/选择该触发器时,会对该表视图的所有数据执行另一次提取。另外,我建议您阅读有关如何执行有效提取的信息 - Marcus S Zarra 的核心数据,第二版
  • 您的错误与您无法在枚举期间改变/更改NSMutableSet 的事实有关。

标签: ios objective-c iphone core-data


【解决方案1】:

我认为@andrew 是对的,问题出在您的数组中,请确保您的数组或用于此目的的任何 datalist 控件必须是可变的,只要是可变的,它就会解决您的问题。

请参阅下面的答案,就像您提出的问题一样。

Collection was mutated while being enumerated error in objective C

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多