1

我正在尝试使用 nsfetchedresultscontroller 从数据库中获取对象以在表格视图中显示。我想将一些自定义对象附加到获取的对象以用于显示目的。最好的方法是什么?

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

另一种方法是放弃 nsfetchedresultscontroller 并创建我自己的数组并将观察者添加到 NSManagedObjectDidSaveNotification。

[fetchedResultsController fetchedObjects] 最初是否将所有对象作为故障提取并且仅在访问属性时触发故障?

4

1 回答 1

1

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

[fetchedResultsController fetchedObjects] 最初是否将所有对象作为故障提取并且仅在访问属性时触发故障?

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

于 2013-04-01T16:30:55.810 回答