【发布时间】:2015-08-07 23:37:56
【问题描述】:
所以我有两个核心数据实体 - PersonObj 和 CheckInObj。
每个帐户有多个人。每个人可以有多个签到,每个签到都有一个时间戳。
PersonObj {
NSSet * checkIns;
}
CheckInObj {
NSDate *timestamp
}
目标是按最近签到对所有人员进行排序。
NSSortDescriptor *nameDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"timestamp" ascending:YES];
NSArray *sortedCheckins = [person.checkIns sortedArrayUsingDescriptors:@[nameDescriptor]];
CheckInObject *mostRecentCheckin = [sortedMessages lastObject];
这给了我最近的签到。
我现在可以对一个临时缓存进行排序,其中包含我找到的与相应人员的最新签到数据,并使用它对每个人进行排序,最后得到一个已排序的人员列表。
问题是:
我可以以某种方式直接在 Person 的对象上运行它吗?
NSArray *persons = [account.persons allObjects];
代替
for (Person *person in persons) {
// find most recent checkin, save temp cache, and resort each time we see a new person in the loop
}
我可以构造一个很棒的排序描述符来为我做这件事吗?
我试过了。
[NSSortDescriptor sortDescriptorWithKey:@"checkIns.timestamp" ascending:YES];
但它不会比较它,因为它是一个 NSSet。
有什么想法吗?
【问题讨论】:
标签: objective-c core-data nssortdescriptor