2010-09-15 232 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