網路上已經有很多排序的相關資料,

特別記錄一下自己最近用到的兩個排序技巧:

一、排序包含數字的NSMutableArray

一個包含有多個數字的mutable array:

排序前array:

[3,2,1,2]

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:YES];
[array sortUsingDescriptors:[NSArray arrayWithObjects:sort, nil]];

排序後array:

[1,2,2,3]

二、排序包含多個NSDictionary的mutable array

一個mutable array中包含多個dictionary,每個dict裡面有一個key叫做”number”

排序前numberArray:
[{
number:”5″
},
{
number:”1″
},
{
number:”3″
}
]

目標:依照number這個key來排序

NSSortDescriptor *sortByNumber = [NSSortDescriptor sortDescriptorWithKey:@"number" ascending:YES];

[numberArray sortUsingDescriptors:[NSArray arrayWithObjects:sortByNumber, nil]];

排序後numberArray:
[{
number:”1″
},
{
number:”3″
},
{
number:”5″
}
]

2016/10/20更新:

若依照number排序後還想要設定第二順位的key排序,

只需再設定一組NSSortDescriptor,

再加入sortUsingDescriptors中。

e.g.

NSSortDescriptor *sortByNumber = [NSSortDescriptor sortDescriptorWithKey:@"number" ascending:YES];
NSSortDescriptor *sortByOrder = [NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES];
[numberArray sortUsingDescriptors:[NSArray arrayWithObjects:sortByNumber, sortByOrder, nil]];