我有以下方法,其中self.orderHeader.meetings是一个核心数据NSManagedObject,会议是一个会议列表。该方法按日期(MeetingDate)对会议进行排序:
- (NSArray *)sortMeetingList {
return [[self.orderHeader.meetings allObjects] sortedArrayUsingDescriptors: [NSArray arrayWithObject: [NSSortDescriptor sortDescriptorWithKey:@"meetingDate" ascending:NO]]];
}它返回我想要的东西,除非遇到没有meetingDate集的对象。这些被放在列表的底部,但是(考虑到降序),我希望将它们显示在列表的顶部:
例如:0,2014-12-29,2014-12-24,而不是2014-12-29,2014-12-24,0
有什么简单的方法吗??
发布于 2014-12-29 20:53:49
试着做这样的事情:
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];
}];发布于 2014-12-29 20:43:25
您可以用NSDate distantFuture替换零日期。
发布于 2014-12-29 20:45:35
使用不同的排序方法,以便显式指定如何处理每个比较,例如使用sortedArrayUsingFunction:context:。
https://stackoverflow.com/questions/27695595
复制相似问题