2011-11-12 26 views
7

我有這樣一個自定義對象:含如何按字母順序排列NSMutable數組中的自定義對象字段?

#import <Foundation/Foundation.h> 

@interface Store : NSObject{ 
    NSString *name; 
    NSString *address; 
} 

@property (nonatomic, retain) NSString *name; 
@property (nonatomic, retain) NSString *address; 

@end 

我的NSMutableArray(storeArray)數組存儲對象:

store1 = [[Store alloc] init]; 
store1.name = @"Walmart";  
store1.address = @"walmart address here.."; 

store2 = [[Store alloc] init]; 
store2.name = @"Target"; 
store2.address = @"Target address here.."; 

store3 = [[Store alloc] init]; 
store3.name = @"Apple Store"; 
store3.address = @"Apple store address here.."; 

//add stores to array 
storeArray = [[NSMutableArray alloc] init]; 
[storeArray addObject:store1]; 
[storeArray addObject:store2]; 
[storeArray addObject:store3]; 

我的問題是如何通過店名數組排序?我知道我可以用這條線按字母順序排序的數組:

[nameOfArray sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; 

如何申請這個我店類的店叫什麼名字?

回答

11

Regexident's answer基於NSArrays,相應就地分揀的NSMutableArray將-sortUsingDescriptors:

[storeArray sortUsingDescriptors: 
        [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" 
                      ascending:YES 
                      selector:@selector(caseInsensitiveCompare:)]]]; 

Now storeArray it-self將被排序。

+1

謝謝你。奇怪的是,他們有兩種方法,結果不同 – Lonkly

+1

你是什麼意思?一個是就地排序,一個創建一個新陣列。兩個版本都有自己的用例。 – vikingosegundo

+1

非常感謝您......大多數答案顯示瞭如何排序'NSArrays',即使它被要求提供'NSMutableArray'數組。這工作就像一個魅力:) – Vidhi