У меня есть a NSArrayController
и я, когда я добираюсь selectedObjects
и создайте NSString со значением valueForKey:@"Name"
это возвращается
(
"This is still a work in progress "
)
и все, что я хочу иметь, является текстом в ""
как я получил бы это? также, этот мой код:
NSArray *arrayWithSelectedObjects = [[NSArray alloc] initWithArray:[arrayController selectedObjects]];
NSString *nameFromArray = [NSString stringWithFormat:@"%@", [arrayWithSelectedObjects valueForKey:@"Name"]];
NSLog(@"%@", nameFromArray);
Править: У меня также есть другие строки в массиве
При вызове ValueForkey:
на массиве, он вызывает ValueForkey:
на каждом из элементов, содержащихся в массиве, и возвращает эти значения в Новый массив, заменяющий Nsnull
для любых значений NIL
. Также нет необходимости дублировать массив SyvalObjects
из контроллера, потому что он все равно неизменно.
Если у вас есть несколько объектов в выбранных объектах контроллера массива, и вы хотите увидеть значение ключа имени всех элементов в выбранных объектах, просто делайте:
NSArray *names = [[arrayController selectedObjects] valueForKey:@"name"];
for (id name in names)
NSLog (@"%@", name);
, конечно, вы можете распечатать их в Однажды, если вы сделали:
NSLog (@"%@", [[arrayController selectedObjects] valueForKey:@"name"]);
, если в массиве есть только один элемент , и вы звоните
ValueForkey:
, он все еще будет возвращать массив, но он будет содержать только значение только ключей одинокого элемента в массиве. Вы можете ссылаться на это с LastObject
.
NSString *theName = [[[arrayController selectedObjects] valueForKey:@"name"] lastObject];
NSLog (@"%@", theName);