2012-05-17 4 views
2

Я пытаюсь использовать функции -setValue:forKey: и получить значение с помощью -valueForKey:Как использовать SetValue: forKey: функция с NSArray

Пример:

NSArray *rootarr = [[NSArray alloc] init]; 
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil]; 
[rootarr setValue:array forKey:@"n"]; 
NSArray *getArr = [rootarr valueForKey:@"n"]; 

Но массив getArr я не равна массив, который я задал (массив).

Не могли бы вы рассказать мне, что случилось, я встретился. И каков способ использования этих функций?

ответ

-1

Невозможно добавить объекты к NSArray после его создания. Для этого вам нужно использовать NSMutableArray.

+0

Это должен быть комментарий, а не ответ. –

5

NSArray метод setValue:forKey: используется для Key Value Coding, а не для использования массива в качестве ассоциативного контейнера. Вам нужно использовать NSMutableDictionary.

NSMutableDictionary *rootDict = [NSMutableDictionary dictionary]; 
NSArray *array = [[NSArray alloc] initWithObjects:@"name", @"address", @"title", nil]; 
[rootDict setValue:array forKey:@"n"]; 
NSArray *getArr = [rootDict valueForKey:@"n"]; 
+0

Несмотря на то, что NSArray действительно использует метод setValue: forKey: ', для использования NSMutableDictionary для кодирования с ключом. Он делает что-то другое, однако! – thundersteele

+1

@ thundersteele Вы правы, я полностью забыл о кодировании ключевых значений! Благодаря! – dasblinkenlight

0

Массив не является хранилищем для ключей, которое, по-видимому, хочет использовать его как. Я думаю, вам нужен NSDictionary вместо этого (точнее, NSMutableDictionary, если вы хотите изменить его после его создания).

Смежные вопросы