Ios 不同实体核心数据属性的最大值
我的核心数据模型中有三个实体,Ios 不同实体核心数据属性的最大值,ios,cocoa,core-data,nsfetchrequest,Ios,Cocoa,Core Data,Nsfetchrequest,我的核心数据模型中有三个实体,A,B,C。每个都有一个createdAt日期 无论实体类型如何,访问最新的createdAt日期的最快方法是什么?我可以做一些类似于: (注意:fetchobjects…是运行执行请求的简单方法) 或者这被认为是有风险的(因为我依赖于不同实体中相同的属性名称)。第一步可以优化。不提取每个实体的所有对象,只提取最近的createAt值(每个实体): 将排序描述符添加到按createdAt降序排序的提取请求中 将fetchLimit设置为1 将resultType设
A
,B
,C
。每个都有一个createdAt
日期
无论实体类型如何,访问最新的createdAt
日期的最快方法是什么?我可以做一些类似于:
(注意:fetchobjects
…是运行执行请求的简单方法)
或者这被认为是有风险的(因为我依赖于不同实体中相同的属性名称)。第一步可以优化。不提取每个实体的所有对象,只提取最近的
createAt
值(每个实体):
- 将排序描述符添加到按
降序排序的提取请求中createdAt
- 将
设置为1fetchLimit
- 将
设置为resultType
NSDictionaryType
- 将
属性设置为
@[@“createdAt”]
createdAt
属性,因此这应该更快、内存占用更少
allObjects
数组将只包含3个字典(每个实体一个)
NSArray *allAs = [context fetchObjectsForEntityName:@"A"];
NSArray *allBs = [context fetchObjectsForEntityName:@"B"];
NSArray *allCs = [context fetchObjectsForEntityName:@"C"];
NSArray *allObjects = [[allAs arrayByAddingObjectsFromArray:allBs] arrayByAddingObjectsFromArray: allCs]
NSDate *latestDate = [allObjects valueForKeyPath:@"@max.createdAt"];