Добавление значений ключа из NSDictionary в NSarray

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

for (NSString * akey in _groups ) {

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

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

4 ответа

Решение

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

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

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

Или же:

_groupArray = [[_groups allKeys] mutableCopy];

Если _groupsArray новый или пустой, то вы можете использовать

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

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

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

[_groupsArray addObjectsFromArray:[dict allKeys]];

Вот как ты должен это делать....

_groupsArray=[dict allKeys];

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

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

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

AllKeys

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

- (NSArray *) allKeys

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

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

обсуждение

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

Другие вопросы по тегам