2011-11-12 17 views
7

Tengo un objeto personalizado como:¿Cómo ordeno alfabéticamente un campo de objeto personalizado dentro de una matriz NSMutable?

#import <Foundation/Foundation.h> 

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

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

@end 

tengo una serie de NSMutableArray (storeArray) que contiene los objetos de la tienda:

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

Mi pregunta es ¿cómo puedo ordenar la matriz por el nombre de la tienda? Sé que puedo ordenar una matriz en orden alfabético por el uso de esta línea:

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

¿Cómo puedo aplicar esto a nombre de la tienda de mi clase de tienda?

Respuesta

11

Regexident's answer se basa en NSArrays, el correspondiente en el lugar de clasificación para NSMutableArray habría -sortUsingDescriptors:

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

Ahora storeArray se ordenará.

+1

Gracias hombre. Es extraño que tengan 2 métodos con diferentes resultados – Lonkly

+1

¿qué quieres decir? Una es para ordenar en el lugar, uno crea una nueva matriz. Ambas versiones tienen sus propios casos de uso. – vikingosegundo

+1

Muchas gracias ... la mayoría de las respuestas muestra cómo ordenar 'NSArrays' aunque se solicite la matriz' NSMutableArray'. Funcionó como por arte de magia :) – Vidhi

Cuestiones relacionadas