добавление значений ключа из NSDictionary в NSarray - PullRequest
0 голосов
/ 17 марта 2012

Я хочу добавить все ключи из словаря в массив. Это то, что я делаю прямо сейчас. Как показано ниже:

for (NSString * akey in _groups ) {

    NSLog(@"%@",akey);
    [_groupArray addObject:akey];
    NSLog(@"%@",_groupArray);
}

В журнале отображается значение Null для _groupArray. Я даже пытался использовать insertObjectAtIndex, даже это не работает. Не уверен, что я делаю неправильно, и да, я получаю ключи в словаре (_groups), ничего плохого в этом нет.

Ответы [ 4 ]

2 голосов
/ 17 марта 2012

Вы должны инициализировать массив перед началом добавления значений к нему. В противном случае это изначально nil и останется nil.

Вы можете использовать allKeys, чтобы получить все ключи массива. Но поскольку _groupArray является NSMutableArray, вы должны сделать это следующим образом:

_groupArray = [NSMutableArray arrayWithArray:[_groups allKeys]];

Или:

_groupArray = [[_groups allKeys] mutableCopy];
1 голос
/ 17 марта 2012

Если _groupsArray является новым или пустым в любом случае, вы можете использовать

_gropusArray = [NSMutableArray arrayWithArray:[dict allKeys]];

Это должно освободить вас от предупреждения компилятора.

Если _groupsArray ранее не был пуст и вам нужно добавить значения, тогда выберите:

[_groupsArray addObjectsFromArray:[dict allKeys]];
0 голосов
/ 17 марта 2012

Вы проверили, что вы выделяете и инициализируете свой изменяемый массив. Если в нем уже нет ничего, что вы добавляете - и даже тогда - рассмотрите возможность использования метода NSDictiomary allKeys вместо перебора словаря.

Из документов

AllKeys

Возвращает новый массив, содержащий ключи словаря.

- (NSArray *) allKeys

Возвращаемое значение

Новый массив, содержащий ключи словаря, или пустой массив, если в словаре нет записей.

Обсуждение

Порядок элементов в массиве не определен.

0 голосов
/ 17 марта 2012

это то, как вы должны это сделать ....

_groupsArray=[dict allKeys];

не забудьте выделить память для вашего _groupsArray ..:)

...