按字母顺序排序可变数组

时间:2010-09-15 17:17:07

标签: iphone objective-c xcode nsmutablearray nsarray

我有一个nsmutable数组,而且那个近50 -60的对象有不同的名字,我可以按字母顺序对这个数组进行排序(是否有可能,怎么样?)

4 个答案:

答案 0 :(得分:14)

对于这样的简单排序,我喜欢使用排序描述符。

假设您有一个可变对象数组,其类具有name NSString属性:

NSSortDescriptor *sort=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:NO];
[myArray sortUsingDescriptors:[NSArray arrayWithObject:sort]];

答案 1 :(得分:8)

当然,您可以使用sortUsingSelector:

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

如果你的数组有自定义对象,那么你需要对这些对象实现一个排序方法:

@implementation myCustomObject
  ...

  -(NSComparisonResult) compare:(myCustomObject*) other {
      return [self.name compare:other.name];
  }

@end

答案 2 :(得分:2)

TechZen的方法效果很好,但是如果您使用NSSortDescriptor的+ sortDescriptorWithKey:ascending:selector :,将“localizedCompare:”作为选择器传递,它会更好。这样,排序就本地化为用户的语言,这可以在字符串比较中产生很大的不同。

答案 3 :(得分:0)

myArray=[myDict keysSortedByValueUsingSelector:@selector(compare:)]; 

简单地为我工作!