Soy nuevo en Objective-C y iPhone
Tengo que ordenar un NSDictionary usando valores y de acuerdo con eso tengo que ordenar las claves de esos valores, he ordenado la matriz.
//getting values
NSArray* keys1 = [sortDictionary allValues];
NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b) {
return [a compare:b options:NSNumericSearch];
}];
Mi problema ahora es que estoy obteniendo las claves de los valores por allKeysForObject:, que devuelve una NSArray.
for( NSString* aStr in sortedArray ) {
NSLog( @"%@ has value %@", [sortDictionary allKeysForObject:aStr], aStr );
}
O/P :- ( Sourish ) has value 60
Más bien quiero "Sourish" como una cadena y almacenarlo en un NSArray y luego almacenar ese NSArray en NSDictionary o almacenar tanto Sourish como 60 en otro NSDictionary
Amablemente haz que solucione nuestro problema.
Respuestas
2 para la respuesta № 1Esto obtiene la cadena por ti mirando la matriz. ¿Es eso lo que buscas?
NSDictionary* sortDictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"60", @"Sourish", @"45" , @"Peckish", @"25", @"Swordfish", @"15", @"Mashmish", nil];
NSArray* keys1 = [sortDictionary allValues];
NSArray* sortedArray = [keys1 sortedArrayUsingComparator:^(id a, id b)
{
return [a compare:b options:NSNumericSearch];
}];
for( NSString* aStr in sortedArray )
{
NSString* keyForObject = @"";
if ([[sortDictionary allKeysForObject: aStr] count] > 0)
{
keyForObject = [[sortDictionary allKeysForObject: aStr] objectAtIndex: 0];
}
NSLog( @"%@ has value %@", keyForObject, aStr );
}
Esto registra:
Mashmish has value 15
Swordfish has value 25
Peckish has value 45
Sourish has value 60
0 para la respuesta № 2
">> Tengo que ordenar un NSDictionary usando valores y de acuerdo con eso tengo que ordenar las claves de esos valores"
NSArray *allkey =[[NSArray alloc] initWithArray:[sortDictionary keysSortedByValueUsingSelector:@selector(compare:)]] ;
Implementa tu método de comparación,
- (NSComparisonResult)compare:(id)b {
return [self compare:b options:NSNumericSearch];
}
El allkey es el conjunto de claves ordenadas usando valores.
0 para la respuesta № 3
puedes usar NSMutableArray
para almacenar sus datos utilizando addObject: selector
o usar NSMutableDictionary
para almacenar tanto como clave: valor pare utilizando addObjectsAndKeys: selector