2010-09-15 230 views
1

我有一个nsmutable阵列,并具有不同的名称,近50 -60对象的可变数组,这样我就能挑选这个数组按字母顺序(是否可能,如何?)排序按字母顺序

回答

14

对于一个简单的小号或者像这样,我喜欢使用排序描述符。

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

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

thansk。它起作用 – mrugen 2010-09-16 19:02:55

+0

这将以“W”开始,而不是“A”开始。如何从“A”开始? – 2013-08-16 20:20:42

+0

我得到升序首先CAPS和小写字母。像“A到Z”,然后是“A到Z”。我需要做什么。 – user3589771 2015-08-11 06:24:10

8

当然,您可以使用sortUsingSelector:此:

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

如果阵列具有自定义对象,那么你就需要实现对这些对象的排序方法:

@implementation myCustomObject 
    ... 

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

@end 
+0

不错的一行答案(对于简单的数组)。 – newenglander 2012-06-02 10:48:54

2

TechZen的做法效果很好,但如果你使用NSSortDescriptor的+ sortDescriptorWithKey它会更好地工作:上行:选择:,传递“localizedCompare:”作为选择器。这样,排序就会根据用户的语言进行本地化,这可以对字符串比较产生很大的影响。

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

只为我工作!

+1

嗯..以前的答案有什么区别? – kleopatra 2013-09-14 16:22:01