[英]How to: sort NSArray by date in descending order with nil date left on top of result set
I have the following method where self.orderHeader.meetings is a core data NSManagedObject with meetings being a list of metting. 我有以下方法,其中self.orderHeader.meetings是核心数据NSManagedObject,会议是会议列表。 The method sorts the meetings by date (meetingDate):
该方法按日期(meetingDate)对会议进行排序:
- (NSArray *)sortMeetingList {
return [[self.orderHeader.meetings allObjects] sortedArrayUsingDescriptors: [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey:@"meetingDate" ascending:NO]]];
}
It returns what I want except for meeting objects that do not have a meetingDate set. 它返回我想要的内容, 除了没有设置MeetingDate的会议对象。 These are left at the bottom of the list, but (given the descending order) I would like to have them shown on top of the list:
这些都留在列表的底部,但是(考虑到降序)我希望它们显示在列表的顶部:
So for example: [nil, 2014-12-29, 2014-12-24] instead of [2014-12-29, 2014-12-24, nil] 举例来说:[nil,2014-12-29,2014-12-24]而不是[2014-12-29,2014-12-24,nil]
Is there an easy way to do this ?? 是否有捷径可寻 ??
Try something like this: 尝试这样的事情:
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];
}];
您可以用[NSDate distantFuture]替换零日期
使用不同的排序方法,以便您可以明确指定如何处理每个比较,例如使用sortedArrayUsingFunction:context:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.