Estoy tratando de ordenar un arreglo que sería algo como esto: (por favor, ignora el hecho de que estas personas son mucho más allá de cualquier edad que viven un gran número I solo es necesario!)Ordenación de un NSArray por un valor NSDictionary
NSDictionary *person1 = [NSDictionary dictionaryWithObjectsAndKeys:@"sam",@"name",@"28.00",@"age",nil];
NSDictionary *person2 = [NSDictionary dictionaryWithObjectsAndKeys:@"cody",@"name",@"100.00",@"age",nil];
NSDictionary *person3 = [NSDictionary dictionaryWithObjectsAndKeys:@"marvin",@"name",@"299.00",@"age",nil];
NSDictionary *person4 = [NSDictionary dictionaryWithObjectsAndKeys:@"billy",@"name",@"0.0",@"age",nil];
NSDictionary *person5 = [NSDictionary dictionaryWithObjectsAndKeys:@"tammy",@"name",@"54.00",@"age",nil];
NSMutableArray *arr = [[NSMutableArray alloc] initWithObjects:person1,person2,person3,person4,person5,nil];
// before sort
NSLog(@"%@",arr);
NSSortDescriptor *ageSorter = [[NSSortDescriptor alloc] initWithKey:@"age" ascending:YES];
[arr sortUsingDescriptors:[NSArray arrayWithObject:ageSorter]];
// after sort
NSLog(@"%@",arr);
Ahora, antes de ordenar la salida sería:
2010-07-21 10:46:31.898 Sorting[70673:207] (
{
age = "28.00";
name = sam;
},
{
age = "100.00";
name = cody;
},
{
age = "299.00";
name = marvin;
},
{
age = "0.0";
name = billy;
},
{
age = "54.00";
name = tammy;
}
)
y después de la clase:
2010-07-21 10:46:31.900 Sorting[70673:207] (
{
age = "0.0";
name = billy;
},
{
age = "100.00";
name = cody;
},
{
age = "28.00";
name = sam;
},
{
age = "299.00";
name = marvin;
},
{
age = "54.00";
name = tammy;
}
)
Como se puede ver qué tipo, pero desde mi entendimiento está la clasificación por cadena. Lo he intentado, pero después de unos días de error al tratar de escribir un método que pudiera solucionarlo, todavía estoy perdido. ¿Cuál sería el mejor enfoque y lo lograr así que ordena por un valor numérico?
¿Por qué no ¿Guarda la edad como número? [NSNumber numberWithFloat: 28.0f]; – Gobra
Porque el guión real con el que estoy trabajando se extrae utilizando JSON, por lo que viene como un objeto de cadena; de lo contrario, lo haría :) – cdnicoll