2010-01-14 18 views
5

Mam NSArrayController i I kiedy dostanę selectedObjects i utworzyć NSString z wartością valueForKey:@"Name" zwracaPierwsze wartość ciągu z NSArray

(
    "This is still a work in progress " 
) 

i wszystko chcę mieć to tekst w "" jak mógłbym to zdobyć? Poza tym, ten mój kod:

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

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

Edit: Mam też inne ciągi w tablicy

Odpowiedz

16

Po wywołaniu valueForKey: na tablicy, wywołuje valueForKey: na każdym z elementów zawartych w tablicy, i zwraca te wartości w nowej tablicy, zastępując wartości NSNull dla każdej wartości nil. Nie ma również potrzeby duplikowania tablicy selectedObjects ze sterownika, ponieważ i tak jest niezmienna.

Jeśli masz wiele obiektów w wybranych obiektach kontroler tablicę, a chcesz zobaczyć wartość klucza nazwy wszystkich przedmiotów w wybranych obiektach, po prostu zrobić:


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

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

Oczywiście, można wydrukować je wszystkie na raz, jeśli tak:

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

Jeśli istnieje tylko jeden element tablicy selectedObjects i zadzwonić valueForKey: będzie nadal zwracać tablicę, ale będzie zawierać tylko wartość klucza samotny element w szyk. Możesz odwołać się do tego z lastObject.

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