我在将多个数组值合并为单个数组时遇到问题。以下是数组:
array1
(
{
Id = 10166;
Name = "Paul";
},
{
Id = 10167;
Name = "Dipleep";
},
{
Id = 10168;
Name = "John";
}
)
array 2
(
{
Country = USA;
},
{
Country = India;
},
{
Country = USA;
}
)
array3
(
{
Id = 10166;
Name = "Paul";
Country = USA;
},
{
Id = 10167;
Name = "Dipleep";
Country = India;
},
{
Id = 10168;
Name = "John";
Country = USA;
}
)
我不知道该怎么做,但尝试了一下:
NSMutableArray *newArr = [[NSMutableArray alloc]init];
[newArr addObjectsFromArray:cartArray];
[newArr addObjectsFromArray:couponsArray];
但是添加错误。您能否为我找到将多个数组值组合到另一个数组中的解决方案。TIA
这样做,
for (int i = 0; i < array1.count; i++) {
NSString *idOfObj = [[array1 objectAtIndex:i] objectForKey:@"Id"];
NSString *name = [[array1 objectAtIndex:i] objectForKey:@"Name"];
NSString *country = [[array2 objectAtIndex:i] objectForKey:@"Country"];
NSDictionary *dic = @{@"Id" :idOfObj,@"Name" : name,@"Country" : country};
[array3 addObject:dic];
}
NSLog(@"result array : %@",array3);
这是一个非常简单的任务:您迭代,创建一个新字典,将来自对象的值组合在同一索引中array1
和array2
。
NSMutableArray *array3 = [[NSMutableArray alloc] init];
for (NSUInteger i = 0; i < [array1 count]; i ++)
{
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
[tempDict addEntriesFromDictionary:array1[i]];
[tempDict addEntriesFromDictionary:array2[i]];
[array3 addObject:tempDict];
}
尽管可能很简单,但仍然存在一些问题,并可能导致崩溃。您可能不会陷入这些情况,但有相同问题的其他用户可能会陷入困境。
所以现在,您需要考虑的是:
• 如果array1[n]
键与array2[n]
有一个共同的键怎么办?因为字典中的键是唯一的。所以该值将被替换(检查addEntriesFromDictionary:
的文档)
• 如果[array1 count]
与[array2 count]
不同怎么办?是的,for loop
可能会由于越界问题而崩溃。
• 为什么您的数据一开始就这样分开?您正在尝试"重新同步"它们,这很好,但是您确定它们已正确同步吗?我的意思是,array1[n]
值真的对应于array2[n]
而不是array2[m]
值?特别是如果您异步获取它们...