2011-02-28 86 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)替换为您的阵列。