2011-11-12 14 views
7

Mam niestandardowego obiektu takich jak:Jak sortować alfabetycznie niestandardowe pole obiektu w tablicy NSMutable?

#import <Foundation/Foundation.h> 

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

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

@end 

mam tablicę NSMutableArray (storeArray) zawierający obiekty Store:

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

Moje pytanie brzmi: w jaki sposób można posortować tablicę według nazwy sklepu? Wiem, że mogę posortować tablicę alfabetycznie, używając tej linii:

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

Jak mogę zastosować to do nazwy sklepu mojej klasy Sklepu?

Odpowiedz

11

Regexident's answer opiera się na NSArrays, z odpowiednim miejscu sortowania dla NSMutableArray byłoby -sortUsingDescriptors:

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

Teraz storeArray sam się posortuje.

+1

Dzięki człowieku. To dziwne, że mają 2 metody z różnymi wynikami. – Lonkly

+1

co masz na myśli? Jeden służy do sortowania na miejscu, jeden tworzy nową tablicę. Obie wersje mają własne przypadki użycia. – vikingosegundo

+1

Dziękuję bardzo ... większość odpowiedzi pokazuje, jak sortować 'NSArrays', mimo że jest pytany o tablicę' NSMutableArray'. To działało jak wdzięk :) – Vidhi

Powiązane problemy