ios - 如何: sort NSArray by date in descending order with nil date left on top of result set

标签 ios objective-c sorting nsarray

我有以下方法,其中 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/

相关文章:

MySQL 按 DESC 顺序对三列进行排序

php - redis 能否提高我的mysql 性能以及如何将数据存储在类似于db 表的redis 中?

ios - 如何在栏按钮项中的第二行文本下方添加下划线?

c++ - Objective C "@property (nonatomic, retain)"的 C++ 等价物是什么?

ios - 类中的 extern NSString *const。

iPhone 相机 - 从图库中选择或拍照

iphone - 检测一个int是否连续重复

javascript - String.prototype.localeCompare 处理大小写不一致?

android - 图标无法正确显示

ios - UIButton touchUpInside 与 UITableViewCell 滑动事件冲突