我有以下方法,其中self.orderHeader.meetings是核心数据NSManagedObject,其中会议是一个metting列表。该方法按日期(meetingDate)对会议进行排序:
- (NSArray *)sortMeetingList {
return [[self.orderHeader.meetings allObjects] sortedArrayUsingDescriptors: [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey:@"meetingDate" ascending:NO]]];
}
它返回我想要的除之外的会议对象没有设置meetingDate。这些都留在列表的底部,但是(按降序排列)我希望它们显示在列表的顶部:
例如:[nil,2014-12-29,2014-12-24]而不是[2014-12-29,2014-12-24,nil]
有一种简单的方法吗?
答案 0 :(得分:4)
尝试这样的事情:
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];
}];
答案 1 :(得分:0)
您可以使用[NSDate distantFuture]
替换无日期答案 2 :(得分:0)
使用不同的排序方法,以便您可以明确指定如何处理每个比较,例如使用sortedArrayUsingFunction:context:
。