gpt4 book ai didi

ios - 带有附加对象的 NSFetchedResultsController

转载 作者:行者123 更新时间:2023-11-29 13:16:15 31 4
gpt4 key购买 nike

我正在尝试使用 nsfetchedresultscontroller 从数据库中获取对象以在 TableView 中显示。我想将一些自定义对象附加到获取的对象以用于显示目的。执行此操作的最佳方法是什么?

我目前的方法是将 [fetchedresultscontroller fetchedObjects] 存储在一个名为 objectsDatasource 的数组中,并将我的对象附加到它。我使用这个 objectsDatasource 作为 tableview 的数据源。当我收到 controllerDidChangeContent 时,我再次调用 fetchedObjects 并重新加载我的 objectsDatasource。会不会有什么性能问题?

替代方案是放弃 nsfetchedresultscontroller 并创建我自己的数组并将观察者添加到 NSManagedObjectDidSaveNotification。

[fetchedResultsController fetchedObjects] 是否一开始就将所有对象作为故障获取,并且仅在访问该属性时才触发故障?

最佳答案

我将避免复制从获取结果 Controller 返回的数组,并尽可能将我添加的结果保存在一个单独的数组中(从获取结果 Controller 返回的数组是一个虚拟游标,指向存储在数据库中的实际数据,并且可能实际上并没有将整个数据集保存在内存中)。
如果附加项没有与从获取结果 Controller 返回的结果混合,我什至可能会将它们放在表格中它们自己的部分。

Does [fetchedResultsController fetchedObjects] fetch all the objects as faults initially and only fire the fault when the property is accessed?

这取决于分配给获取结果 Controller 的获取请求。如果您设置:[request setReturnsObjectsAsFaults:NO][request setIncludesPropertyValues:YES], Controller 将在对象第一次从数据库中获取时出错,而不是在它们再次获取时出错出现故障(性能好得多)。

关于ios - 带有附加对象的 NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15743761/

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