将数组 1 和数组 2 的值合并到数组 3 objective c

Merge array1 and array 2 values into array3 objective c

我在将多个数组值重新合并为单个数组时遇到问题。以下是数组:

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);

这是一项非常简单的任务: 您迭代,创建一个新字典,将 array1array2 中对象的值组合在同一索引处。

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 可能会因越界问题而崩溃。
• 为什么你的数据一开始是这样分开的?您正在尝试 "resynchronize" 它们,这很好,但是您确定它们已正确同步吗?我的意思是,array1[n] 值真的对应于 array2[n] 而不是 array2[m] 值?特别是如果您异步获取它们...