2017-06-14 26 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

我知道如何做到這一點,我想到了另一種類似的方式來做到這一點。謝謝 –