我有以下方法,其中 self.orderHeader.meetings 是核心数据 NSManagedObject, session 是 session 列表。该方法按日期 (meetingDate) 对 session 进行排序:
- (NSArray *)sortMeetingList {
return [[self.orderHeader.meetings allObjects] sortedArrayUsingDescriptors: [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey:@"meetingDate" ascending:NO]]];
}
对于没有设置 session 日期的 session 对象,它返回我想要的除外。这些留在列表的底部,但是(按降序排列)我想让它们显示在列表的顶部:
例如:[nil, 2014-12-29, 2014-12-24] 而不是 [2014-12-29, 2014-12-24, nil]
有没有简单的方法可以做到这一点??
最佳答案
尝试这样的事情:
NSArray *sortedMeetings = [unsortedMeetings sortedArrayUsingComparator:^NSComparisonResult(MeetingObjectClass *obj1, MeetingObjectClass *obj2) {
if (!obj1.meetingDate)
return NSOrderedAscending;
if (!obj2.meetingDate)
return NSOrderedDescending;
return [obj2.meetingDate compare:obj1.meetingDate];
}];
关于ios - 如何: sort NSArray by date in descending order with nil date left on top of result set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27695595/