Core data NSManagedObject的大型阵列

Core data NSManagedObject的大型阵列,core-data,memory-management,nsarray,nsmanagedobject,nsmanagedobjectid,Core Data,Memory Management,Nsarray,Nsmanagedobject,Nsmanagedobjectid,应用程序的viewcontroller具有大量对象,并且内存压力很大。有一种仅用于解决方案存储的ManagedObjects数组而不是托管对象,但我不确定这是优化内存管理的最有效方法,因为对象ID太长。有没有减少内存使用的解决方案 由于复杂的过滤和排序,我使用自定义对象(不是 托管对象)作为托管对象的父对象。对不起,我忘了 提到这个重要的细节 您应该尝试将筛选和排序移动为NSFetchRequest的谓词和sortddescriptor。然后,您可以使用fetchBatchSize来限制同时从持

应用程序的viewcontroller具有大量对象,并且内存压力很大。有一种仅用于解决方案存储的ManagedObjects数组而不是托管对象,但我不确定这是优化内存管理的最有效方法,因为对象ID太长。有没有减少内存使用的解决方案

由于复杂的过滤和排序,我使用自定义对象(不是 托管对象)作为托管对象的父对象。对不起,我忘了 提到这个重要的细节


您应该尝试将筛选和排序移动为
NSFetchRequest
谓词和
sortddescriptor
。然后,您可以使用
fetchBatchSize
来限制同时从持久性存储中提取并保存在内存中的对象的数量。

是否使用表视图或集合视图来显示对象?是的,我使用表视图来显示这些对象您是否也使用
NSFetchedResultsController
?否,只需获取对象并使用块进行排序,其中排序与对象的child相关(child使用谓词进行获取)。由于复杂的筛选和排序,我使用自定义对象(非托管对象)作为托管对象的父对象。抱歉,我忘了提到这个重要的细节CoreData是否可以使用谓词和带有块的排序描述符而不是字符串描述?@user578205:这是不可能的。解释。您必须更改它们,以便将它们转换为SQL查询。