如何按字母顺序重新排序NSArray的元素(NSString)?

时间:2011-02-28 12:35:35

标签: iphone objective-c xcode nsarray

如何按字母顺序重新排序NSArray的元素(NSString)?

5 个答案:

答案 0 :(得分:5)

NSSortDescriptor 对于其元素只是 NSString 实例的数组进行排序是过分的。

NSArray *sortedArray = [unsortedArray sortedArrayUsingSelector: @selector(compare:)];

如果要对实例化的元素进行实例化排序,而不是重新排序 NSMutableArray 实例的元素,那么有一种方法:

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

当您有一个大型对象管理数组时,使用 NSSortDescriptor 实例,例如NSArrayController或NSTableView。如果是这种情况,并且元素只是 NSString 的实例,那么@ iHS的答案是正确的。

答案 1 :(得分:4)

您可以使用NSSortDescriptor类进行排序

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

有关详细信息,请查看

1)NSSortDescriptor

2)Sorting-NSArrays

答案 2 :(得分:4)

你可以使用sortDescriptor

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

答案 3 :(得分:0)

当然可以这样做尝试使用NSSortDescriptor从已经问Display data in alphabetical order iphone

获取帮助

答案 4 :(得分:0)

Swift 3.0:

类别是类别的数组 - > [类别]。

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

用您的自定义对象数组替换类别。如果您使用的是常规NSArray,请将(categories as NSArray)替换为您的阵列。