我对使用coredata这一最有效的方法有一个或多或少的一般性问题。
我尝试了两种不同的管理数据的方法,这些方法显示在我的项目视图中。
方法1 :当视图加载时,我执行所有coredata提取并将结果存储在数组中,然后视图从数组中检索显示的对象。 (即:objectAtIndex:...)
方法2 :viewcontroller本身允许我的数据处理类随时随地执行提取,只要需要特定的coredata对象就可以获取它。
在我当前的项目中,这会侵入大约200-500个对象,这些对象需要根据其属性在tableview中进行排序和显示。
fetch方法与我首先加载所有对象或者批量加载它们(具有正确的属性)相同。
区别主要在于cellForRow方法,我必须决定是从数组中选择对象还是直接从coredata中选择对象。
两种方法都运行得很好,我现在没有看到任何性能差异,但我担心随着项目的扩展和一种或另一种方式的更多数据可能会更慢。
您认为更好的方法是什么?
答案 0 :(得分:2)
对于较大的数据集,在使用NSFetchedResultsController
控制器的峰值内存占用方面可能有一个优势,可能是根据表大小优化从持久存储中获取适当数量的数据。 / p>
使用NSFetchedResultsController
,您可以控制提取批量大小,您可以根据提取的托管对象的大小和数量来调整性能等。