2011-11-12 4 views
7

ように私は、カスタムオブジェクトを持っている:私は、ストアオブジェクトを含むNSMutableArrayのの配列(storeArray)を持っているNSMutable配列内のカスタムオブジェクトフィールドをアルファベット順にソートするにはどうすればよいですか?

#import <Foundation/Foundation.h> 

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

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

@end 

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:)]; 

これを私のStoreクラスのストア名に適用するにはどうすればよいですか?

答えて

11

Regexident's answerがNSArraysに基づいており、NSMutableArrayののソートにインプレース対応する-sortUsingDescriptors:

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

今すぐstoreArray it-selfがソートされます。

+1

ありがとうございます。それは彼らが異なる結果を持つ2つの方法を持っていることは奇妙です – Lonkly

+1

何を意味するのですか? 1つはインプレースソート、1つは新しい配列を作成するためです。どちらのバージョンも独自のユースケースを持っています。 – vikingosegundo

+1

ありがとうございました...ほとんどの回答は、 'NSMutableArray'配列を求められてもNSArraysをソートする方法を示しています。これは魅力的に働いた:) – Vidhi

関連する問題