NSMutable配列内のカスタムオブジェクトフィールドをアルファベット順にソートするにはどうすればよいですか?

私は次のようなカスタムオブジェクトを持っています:

#import 

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

これを私のStoreクラスのストア名にどのように適用できますか?

7
追加された 編集された
ビュー: 1

2 答え

NSSortDescriptor *sortDescriptor =
    [NSSortDescriptor sortDescriptorWithKey:@"name"
                                  ascending:YES
                                   selector:@selector(caseInsensitiveCompare:)];
[nameOfArray sortedArrayUsingDescriptors:@[sortDescriptor]];

関連ドキュメント:

27
追加された

Regexident's answer is based on NSArrays, the corresponding in-place sorting for NSMutableArray would be -sortUsingDescriptors:

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

これで、 storeArray it-selfがソートされます。

11
追加された
どういう意味ですか? 1つはインプレースソート、1つは新しい配列を作成するためです。どちらのバージョンも独自のユースケースを持っています。
追加された 著者 vikingosegundo,
どうもありがとう...ほとんどの答えは、 NSMutableArray 配列を尋ねても、 NSArrays をソートする方法を示しています。これは魅力的に働いた:)
追加された 著者 Vidhi,
ありがとう。異なる結果を持つ2つの方法があるのは奇妙です
追加された 著者 Lonkly,