2017-06-14 27 views
0

我有一个工作日的阵列,日子可以在阵列的任何位置。如何排序平日的NSArray?

例如,我的数组可能是星期五,星期三,星期一,星期二。所以我想对它进行排序,以便周一,周二,周三,周五。

我该怎么做?

+1

开始由工作日字符串映射到一个数字索引。 – Sulthan

回答

1

开始按天字符串映射到数字索引:

NSArray *days = @[ 
    @"Mon", 
    @"Tue", 
    @"Wed", 
    @"Thu", 
    @"Fri", 
    @"Sat", 
    @"Sun" 
]; 

NSUInteger dayIndex = [days indexOfObject:string]; 

然后,你可以简单地在阵列使用排序,例如:

NSArray *sortedDays = [array sortedArrayUsingComparator:^NSComparisonResult(NSString *dayString1, NSString *dayString2) { 
    NSUInteger dayIndex1 = [days indexOfObject:dayString1];   
    NSUInteger dayIndex2 = [days indexOfObject:dayString2]; 

    if (dayIndex1 < dayIndex2) { 
     return NSOrderedAscending; 
    } 

    if (dayIndex1 > dayIndex2) { 
     return NSOrderedDescending; 
    } 

    return NSOrderedSame; 
}]; 
+0

我知道如何做到这一点,我想到了另一种类似的方式来做到这一点。谢谢 –