Добавление значений ключа из 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
Возвращаемое значение
Новый массив, содержащий ключи словаря, или пустой массив, если в словаре нет записей.
обсуждение
Порядок элементов в массиве не определен.