如何在没有Keys的情况下设置NSDictionary

时间:2013-01-29 11:08:15

标签: iphone ios ipad

我有两个存储在字典中的数组:

array1=[[NSArray alloc]initWithObjects:a,b,c,d,e, nil];
array2=[[NSArray alloc]initWithObjects:1,2,3, nil];
 NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:array2];

如果我跑,我得到错误:

-[NSDictionary initWithObjects:forKeys:]: count of objects (0) differs from count of keys (1)'

现在我想仅使用键设置字典a,b,c:1,2,3。

因为无法编辑数组

我该怎么做

5 个答案:

答案 0 :(得分:2)

为nil值添加键没有意义。

NSRange range = NSMakeRange(0, MIN(array1.count, array2.count));
NSDictionary * dic=[[NSDictionary alloc]initWithObjects:[array1 subarrayWithRange:range]
                                                forKeys:[array2 subarrayWithRange:range]];

答案 1 :(得分:1)

用作:

array1=[[NSArray alloc]initWithObjects:a,b,c,d,e, nil];
array2=[[NSArray alloc]initWithObjects:1,2,3, nil];
// NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:array2];

NSMutableDictionary * dic=[NSMutableDictionary new];
for(int i=0 ; i< array2.count ; i++ ){
   [dic setObject:array1[i] forKey:array2[i]];
}

答案 2 :(得分:0)

使用NSMutableArray处理第一个数组 删除d&amp;从它那里

答案 3 :(得分:0)

整个数组的单个键很容易设置:

NSDictionary * dic=[[NSDictionary alloc]initWithObjects:array1 forKeys:@"Array"];

如果你想为数组中的每个对象添加一个键,它就像这样:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
int key = 1;
for (NSString *str in array1) {
    [dict setObject:str forKey:[NSString stringWithFormat:@"%d",key]];
    key++;
}

希望这有帮助!!!

答案 4 :(得分:0)

来自Doc:

密钥和值都不能为零;如果需要在字典中表示空值,则应使用NSNull。