2011-02-28 89 views

回答

4

可以使用sortDescriptor

NSSortDescriptor *descriptor = [[[NSSortDescriptor alloc] initWithKey:@"yourKey" ascending:YES selector:@selector(caseInsensitiveCompare:)] autorelease]; 
NSArray * sortedArray = 
    [yourArray sortedArrayUsingDescriptors:descriptor]; 
4

可以使用NSSortDescriptor類排序目的

NSSortDescriptor * sortDesc = [[NSSortDescriptor alloc] initWithKey:@」self」 ascending:YES]; 
[array sortUsingDescriptors:[NSArray arrayWithObject:sortDesc]]; 
[sortDesc release]; 

欲瞭解更多信息,看看

1)NSSortDescriptor

2)Sorting-NSArrays

5

NSSortDescriptor是矯枉過正數組排序的元素只是的NSString實例。

​​

如果不是與排序其元素實例化一個新的數組,你想有一個的NSMutableArray例如重新排序的元素,對此有專門的方法:

[unsortedMutableArray sortUsingSelector: @selector(compare:)]; 

使用的NSSortDescriptor實例,當你有一個大對象管理你的數組,像NSArrayController或NSTableView。如果是這種情況,並且元素只是NSString的實例,那麼@ iHS的答案是正確的。

+0

我第二個這個。但是,如果您使用NSSortDescriptor,則可以使用@「」,@「self」或甚至@「description」作爲NSString數組的排序鍵。但爲什麼不使用蘋果給出的比較:爲此? – 2012-01-19 15:31:44

0

Swift 3.0:

類別是Category - > [Category]的數組。

let sortDescriptor = NSSortDescriptor(key: "name", ascending: true, selector: #selector(NSString.caseInsensitiveCompare(_:)))             
let orderedCategories = (categories as NSArray).sortedArray(using: [sortDescriptor]) 

用您的自定義對象數組替換類別。如果您使用的是常規NSArray,請將(categories as NSArray)替換爲您的陣列。