0

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

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。

因为数组无法编辑

我怎样才能做到这一点

4

5 回答 5

2

为 nil 值添加键是没有意义的。

NSRange range = NSMakeRange(0, MIN(array1.count, array2.count));
NSDictionary * dic=[[NSDictionary alloc]initWithObjects:[array1 subarrayWithRange:range]
                                                forKeys:[array2 subarrayWithRange:range]];
于 2013-01-29T11:16:52.743 回答
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]];
}
于 2013-01-29T11:17:02.273 回答
0

从文档:

键和值都不能为 nil;如果你需要在字典中表示一个空值,你应该使用 NSNull。

于 2013-01-29T11:18:46.350 回答
0

使用 NSMutableArray 处理第一个数组,从中删除 d & e

于 2013-01-29T11:10:53.233 回答
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++;
}

希望这可以帮助!!!

于 2013-01-29T11:11:53.830 回答