Когда вы вызываете valueForKey:
для массива, он вызывает valueForKey:
для каждого из элементов, содержащихся в массиве, и возвращает эти значения в новом массиве, подставляя NSNull
для любых значений nil
. Также нет необходимости дублировать массив selectedObjects
с контроллера, так как он в любом случае неизменен.
Если у вас есть несколько объектов в выбранных объектах контроллера массива, и вы хотите увидеть значение ключа имени всех элементов в выбранных объектах, просто выполните:
NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"];
for (id name in names)
NSLog (@"%@", name);
Конечно, вы можете распечатать их все сразу, если вы сделали:
NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]);
Если в массиве selectedObjects
есть только один элемент и вы вызываете valueForKey:
, он все равно будет возвращать массив, но он будет содержать только значение ключа одиночного элемента в массиве. Вы можете сослаться на это с помощью lastObject
.
NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject];
NSLog (@"%@", theName);