Получение строки оценивает от NSArray

У меня есть 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);

Править: У меня также есть другие строки в массиве

5
задан nanochrome 14 January 2010 в 23:35
поделиться

1 ответ

При вызове 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);
16
ответ дан 18 December 2019 в 10:44
поделиться