Sto cercando di ordinare un array che sarebbe simile a questa: (si prega di ignorare il fatto che queste persone sono ben oltre qualsiasi età vivente I grandi numeri solo bisogno!)Ordinamento di un NSArray da un valore 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);
Ora, prima di ordinare l'output potrebbe essere:
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;
}
)
e dopo l'ordinamento:
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;
}
)
Come si può vedere lo fa specie, ma dalla mia comprensione è l'ordinamento per stringa. Ho provato, ma dopo alcuni giorni di fallimento nel tentativo di scrivere un metodo che avrebbe risolto questo problema per me, sono ancora in perdita. Quale sarebbe l'approccio migliore e la realizzazione di questo in modo da ordinare un valore numerico?
Perché non Hai archiviato l'età come numero? [NSNumber numberWithFloat: 28.0f]; – Gobra
Poiché il vero script con cui sto lavorando viene tirato usando JSON, così come un oggetto stringa altrimenti lo farei :) – cdnicoll