• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSCoreData 条目获取的性能

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:10:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

例如,我在数据库中有 10 000 个条目,我需要将它们显示到 UITableView 中。

所以,我应该设置所有 NSCoreData 的东西,创建 NSFetchRequest 和 NSFetchedResultsController。

然后我可以使用 [NSFetchedResultsController objectAtIndex] 方法访问 cellForRowAtIndexPath 中的这些条目。

问题是:

  1. NSFetchedResultsController 是否会以 LAZY 方式加载所有这些对象,只有在用户实际将 UITableView 滚动到相应的单元格之后?
  2. 只需将 NSFetchRequest 的 fetchBatchSize 设置为与屏幕上的单元格数相等的数字就足够了吗?
  3. 我应该使用单独的 NSManagedObjectContext 和后台线程来加载这些对象吗?在单独线程的情况下,[NSFetchedResultsController objectAtIndex] 方法如何工作,而它是从 Main-UI-thread 调用的?
  4. 我是否应该担心这些事情,而我只有 10k 个条目?



Best Answer-推荐答案


NSFetchedResultsController 为您解决所有问题。

  1. 延迟加载?事实上,FRC 会尽量做到延迟加载。没有什么让你做的。实际上,它针对滚动、速度、性能、内存使用进行了优化,应有尽有。
  2. 批量大小?不相关。你可以忘记它。如果您愿意,请设置性能测试并比较使用和不使用 batchSize 的情况。我预测您不会发现任何差异,或者可以忽略不计。 (如果有任何东西可能具有极高的滚动速度。)
  3. 单独的 NSManagedObjectContext? 绝对不行。 NSFetchedResultsController 应该在主线程上使用。
  4. 担心记录数?您完全不必担心以上原因,尤其是延迟加载。我在 X00.000s 记录方面取得了很好的成绩。

关于ios - NSCoreData 条目获取的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831667/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap