将数组 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);
这是一项非常简单的任务:
您迭代,创建一个新字典,将 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
可能会因越界问题而崩溃。
• 为什么你的数据一开始是这样分开的?您正在尝试 "resynchronize" 它们,这很好,但是您确定它们已正确同步吗?我的意思是,array1[n]
值真的对应于 array2[n]
而不是 array2[m]
值?特别是如果您异步获取它们...
我在将多个数组值重新合并为单个数组时遇到问题。以下是数组:
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
可能会因越界问题而崩溃。
• 为什么你的数据一开始是这样分开的?您正在尝试 "resynchronize" 它们,这很好,但是您确定它们已正确同步吗?我的意思是,array1[n]
值真的对应于 array2[n]
而不是 array2[m]
值?特别是如果您异步获取它们...