带有其他对象的NSFetchedResultsController

时间:2013-04-01 12:46:06

标签: ios core-data

我正在尝试使用nsfetchedresultscontroller从DB中获取对象以在tableview中显示。我想将一些自定义对象附加到提取的对象以进行显示。最好的方法是什么?

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

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

[fetchedResultsController fetchedObjects]最初是否将所有对象作为错误获取,并且仅在访问该属性时触发错误?

1 个答案:

答案 0 :(得分:1)

我将避免复制从获取结果控制器返回的数组,并在可能的情况下将我添加的结果保存在单独的数组中(从获取结果控制器返回的数组是存储在数据库中的实际数据的虚拟光标,并且可能不实际将整个数据集保存在内存中 如果aditional项目没有与fetch results controller返回的结果混合,我甚至可能将它们放在表格的各个部分。

  
    

[fetchedResultsController fetchedObjects]最初是否将所有对象作为错误获取,并且仅在访问该属性时触发错误?

  

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