2010-01-14 8 views
5

Tengo un NSArrayController y yo cuando tengo la selectedObjects y crear un NSString con el valor de valueForKey:@"Name" vuelverecibiendo el valor de cadena de una NSArray

(
    "This is still a work in progress " 
) 

y todo lo que queremos es que el texto de la "" ¿cómo lo conseguiría? También, ésta es mi código:

NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]]; 

NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]]; 
NSLog(@"%@", nameFromArray); 

Editar: También tengo otras cadenas de la matriz

Respuesta

16

Cuando se llama a valueForKey: en una matriz, que llama valueForKey: en cada uno de los elementos contenidos en la matriz, y devuelve esos valores en una nueva matriz, sustituyendo NSNull por cualquier valor nil. Tampoco es necesario duplicar la matriz selectedObjects del controlador porque de todos modos es inmutable.

Si tiene varios objetos en los objetos seleccionados de su controladora de la matriz, y quiere ver el valor de la clave nombre de todos los elementos de los objetos seleccionados, sólo tiene que hacer:


NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"]; 

for (id name in names) 
    NSLog (@"%@", name); 

Por supuesto, usted podría imprimirlos todos a la vez si lo hizo:

NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]); 

Si sólo hay un elemento de la matriz selectedObjects, y se llaman valueForKey:, todavía devolver una matriz, pero sólo contendrá el valor de la clave de el elemento solitario en el formación. Puede hacer referencia a esto con lastObject.

NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject]; 
NSLog (@"%@", theName); 
Cuestiones relacionadas