2011-12-01 9 views
7

tengo una matriz con diccionarios, y la necesidad de buscar Trough la matrizBuscar NSArray de NSDictionaries

y modificar un diccionario específico de la matriz encontrado por un nombre de objeto en el interior del diccionario.

Por lo tanto, crear la matriz, diccionario mutable, y agregar muchos diccionarios a la matriz

 ...{ self.bloquesArray = [[[NSMutableArray alloc] init]autorelease]; 
    [self createBloqueDicto]; 
    [self.unBloqueDicto setObject:@"easySprite" forKey:@"Name"]; 
    [self.unBloqueDicto setObject:@"290" forKey:@"X"]; 
    [self.unBloqueDicto setObject:@"300" forKey:@"Y"]; 

    [self.bloquesArray addObject:self.unBloqueDicto]; 

} 

- (void)createBloqueDicto { 
self.unBloqueDicto = [[[NSMutableDictionary alloc] init] autorelease]; 
} 

así que ahora tengo que cambiar el valor de la tecla X e Y en el diccionario con

clave : Name = easySprite así que necesito encontrar ese diccionario específico [otros diccionarios tienen diferentes valores para Nombre]

¿cómo puedo hacer esto por favor?

gracias!

Respuesta

18

hacer lo siguiente para obtener los diccionarios emparejados,

NSPredicate *p = [NSPredicate predicateWithFormat:@"Name = %@", @"easySprite"]; 
NSArray *matchedDicts = [bloquesArray filteredArrayUsingPredicate:p]; 

Ahora los matchedDicts contiene los diccionarios con el valor @ "easySprite" para la clave @ "Nombre". Haz el resto (cambiando la X y la Y) desde allí.

+0

que es increíble gracias, para ver el contenido del diccionario en otra matriz, pero ¿cómo puedo saber cuál es el índice de ese diccionario? y modificar ese diccionario específico ?, gracias! – MaKo

+0

No puede editar un diccionario que está en una matriz. Primero obtenga el diccionario, cree un nuevo diccionario con nuevos valores, elimine el diccionario anterior de la matriz y agregue el nuevo diccionario a la matriz. – EmptyStack

+0

@EmptyStack, a menos que los elementos de NSArray ya sean NSMutableDictionary ... his 'unBloqueDicto' es un NSMutableDictionary, por lo que * es * mutable. –