使用比较器i来获得这些数据

时间:2016-10-17 13:35:37

标签: ios objective-c

数据是 ... ... ...

活动名称: - HSS WE 日期: - 2016年6月6日 - 2016年7月7日

活动名称: - CSS Retreat 日期: - 2016年6月6日 - 2016年9月9日

活动名称: - 数字公开会议 日期: - 2016年10月6日 - 2016年10月7日

活动名称: - GEO会议 日期: - 2016年6月6日 - 2016年7月7日

活动名称: - ISB会议 日期: - 2016年10月6日 - 2016年10月7日 ... ... ......等等。

我已使用时间戳对此进行了排序,但现在由于我的日期相同,我希望使用事件名称Ascending对此数据进行排序,而不会影响数组中的其他数据。

1 个答案:

答案 0 :(得分:0)

假设您有这门课程:

@interface EventInfo
//Note that calling a NSDate with timeStamp is weird, we may expect a NSTimerInverval
@property (nonatomic, strong) NSDate eventStartTimeStamp; 
@proprety (nonatomic, strong) NSDate eventName;
@end

您使用NSComparisonResult块。 而不是简单地返回日期的比较,如果日期是相同的,则返回比较(按字母顺序)与事件名称。

NSMutableArray *array = //Your array of EventInfo objects;
[array sortUsingComparator:^NSComparisonResult(EventInfo * _Nonnull event1, EventInfo * _Nonnull event2) {
    NSComparisonResult dateCompare = [event2.eventStartDateStamp compare:event1.eventStartDateStamp]; 
    /*Date are not the same => Date comparison is priority*/
    if (dateCompare != NSOrderedSame)
    {
       return dateCompare;
    }
    else/*Same date => Use Event name to sort*/
    {
        return [event2.eventName compare:event1.eventName];
        //or return [event1.eventName compare:event2.eventName]; depending on alphabetical or reversed 
    }
}];