我想将字典中的所有键添加到数组中。这就是我现在正在做的事情。如下面的代码:
for (NSString * akey in _groups ) {
NSLog(@"%@",akey);
[_groupArray addObject:akey];
NSLog(@"%@",_groupArray);
}
_groupArray的日志显示为Null。我甚至尝试使用insertObjectAtIndex
,即使这不起作用。不确定我做错了什么,是的,我得到字典中的键(_groups)没有错。
答案 0 :(得分:2)
您应该在开始向其添加值之前初始化数组。否则,它最初为nil
,并将保持nil
。
您可以使用allKeys
获取阵列的所有键。但由于_groupArray
是NSMutableArray
,您必须这样做:
_groupArray = [NSMutableArray arrayWithArray:[_groups allKeys]];
或者:
_groupArray = [[_groups allKeys] mutableCopy];
答案 1 :(得分:1)
如果_groupsArray是新的或空的,那么你可以使用
_gropusArray = [NSMutableArray arrayWithArray:[dict allKeys]];
这应该会从编译器警告中释放出来。
如果之前_groupsArray不是空的,你需要添加值,那么请去:
[_groupsArray addObjectsFromArray:[dict allKeys]];
答案 2 :(得分:0)
这就是你应该怎么做....
_groupsArray=[dict allKeys];
不要忘记为你的_groupsArray分配内存......:)
答案 3 :(得分:0)
你有没有检查过你已经分配并初始化了你的可变数组。除非你已经添加了一些东西 - 甚至那时 - 考虑使用NSDictiomary allKeys方法而不是遍历字典。
来自文档
<强> allKeys 强>
返回一个包含字典键的新数组。
- (NSArray *) allKeys
返回值
包含字典键的新数组,如果字典没有条目,则为空数组。
<强>讨论强>
未定义数组中元素的顺序。