gpt4 book ai didi

iphone - cocoa touch : When does an NSFetchedResultsController become necessary to manage a Core Data fetch?

转载 作者:行者123 更新时间:2023-12-03 18:43:05 25 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,该应用程序大量使用 Core Data,主要是为了其类似数据库的功能(例如在获取请求上设置排序顺序或谓词的能力)。我正在展示我在各种 UITableViewController 中获取的所有数据。

我想知道的是在使用 NSFetchedResultsController 来处理请求之前我可以获取多少对象的粗略想法。在核心数据文档中,它说 SQLite 存储认为“10,000 个对象是一个相当小的数据集”,但在 NSFetchedResultsController 的文档中,它提到一次在内存中保留“数十个对象”。

我主要处理最多 50 个对象的数据集,每个对象可能有十几个 NSNumber 和 NSString 实例,以及下一组对象的一对多关系(即有 20 个实例)对象 A 的每个实例都与对象 B 的一组 30 个(不同的)实例具有一对多关系,其中每个实例...)。

这种情况是否适合使用 NSFetchedResultsController,或者我可以使用简单的 NSArray 结果吗?我自己对管理 Controller 的细节没有问题(获取 UITableView 索引路径的对象的便捷方法,将新对象添加回上下文等),我只是想知道每种方法。

我应该提到的是,该应用程序将主要针对 iPhone 3G(而非 S)和第一代 iPod Touch 用户,因此请记住这些平台的内存有限。

最佳答案

NSFetchedResultsController 是一个非常方便的帮助器类,用于将 Core Data 与 UITableView 连接。我的建议是在每个有核心数据支持的 TableView 中使用它。在我使用它的每种情况下,它都显着减少了我必须编写的代码量。

在性能方面,它也可以带来巨大的改进。如果您将 -setFetchBatchSize: 与输入到 NSFetchedResultsController 中的 NSFetchRequest 一起使用,而不是提取整个数据集,则可以进行批量提取,其中仅提取 TableView 中显示的相关数据。不再显示的数据也可以自动从内存中删除(或者我的理解是这样)。

对于具有中等到大型数据集的表,这可以带来显着的性能提升。据苹果工程师称,对于 10,000 个项目的数据库,这可以将启动时间减少 80% 以上,并将内存使用量减少 50%。

关于iphone - cocoa touch : When does an NSFetchedResultsController become necessary to manage a Core Data fetch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com