我有三个NSArray
,我希望将它们全部合并为一个NSDictionary
。问题是当我遍历数组并创建字典时,它会覆盖前一个对象。最后我在字典中只有一个对象。我究竟做错了什么?这是我的代码:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
for(int i=0; i<[array0 count]; i++) {
[dict setObject:[array0 objectAtIndex:i]
forKey:@"one"];
[dict setObject:[array1 objectAtIndex:i] f
orKey:@"two"];
[dict setObject:[array2 objectAtIndex:i]
forKey:@"three"];
}
也许这会澄清我的意思...... 这是我要去的结果:
{one = array0_obj0, two = array1_obj0, three = array2_obj0},
{one = array0_obj1, two = array1_obj1, three = array2_obj1},
{one = array0_obj2, two = array1_obj2, three = array2_obj2},
etc
由于
答案 0 :(得分:5)
您正在特定键上插入并替换相同的对象。所以字典的所有内容都是最后一个索引的最后一个对象。
使用此代码将三个数组添加到一个带有特定键的字典中。
NSDictionary *yourDictinary = @{@"one": array0, @"two": array1, @"three": array3};
如果您需要将NSMutableArrays
的对象添加到一个NSDictionary
,您可以按照@ElJay发布的答案进行操作,但这不是一个好习惯,因为您正在处理多个具有唯一键的对象。
为了做到这一点,我们讨论的是单个NSMutableArray和多个NSDictinarys。
请遵循以下代码:
NSMutableArray *allObjects = [NSMutableArray new];
for(int i=0; i<[array0 count]; i++) {
dict = @{@"one": array0[i], @"two": array1[i], @"three": array2[i]};
[allObjects addObject:dict];
}
答案 1 :(得分:4)
这里你去:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
for(int i=0; i<[array0 count]; i++) {
[dict setObject:[array0 objectAtIndex:i] forKey:[NSString stringWithFormat:@"arr0_%d", i]];
[dict setObject:[array1 objectAtIndex:i] forKey:[NSString stringWithFormat:@"arr1_%d", i]];
[dict setObject:[array2 objectAtIndex:i] forKey:[NSString stringWithFormat:@"arr2_%d", i]];
}
编辑 - 修改后的问题:
self.array0 = @[@"Array0_0",@"Array0_1",@"Array0_2", @"Array0_3"];
self.array1 = @[@"Array1_0",@"Array1_1",@"Array1_2", @"Array1_3"];
self.array2 = @[@"Array2_0",@"Array2_1",@"Array2_2", @"Array2_3"];
NSMutableArray *finalArray = [[NSMutableArray alloc] init];
for (int i=0; i< [_array0 count]; i++) {
NSDictionary *dict = @{@"one":[_array0 objectAtIndex:i], @"two":[_array1 objectAtIndex:i],@"three":[_array2 objectAtIndex:i]};
[finalArray addObject:dict];
}
NSLog(@"finalArray = %@", [finalArray description]);
答案 2 :(得分:3)
您在循环的每次迭代中重复使用键("one", "two" and "three")
。 NSDictionary
中的密钥必须是唯一的。
答案 3 :(得分:-1)
如果你想要很多字典但只需要三个键,你应该将每个字典保存在一个数组中。