Objective C 如何合并多个NSMutableArray?
Objective C How to merge multiple NSMutableArray?
我有几个 NSMutableArrays
比如 arr1,arr2,arr3,arr4。如何将所有 NSMutableArrays
合并在一起?或者有没有办法多次追加一个数组?
示例:
arr = [[NSMutableArray alloc] init];
//first loop
for(condition){
[arr addObject:firstLoopValue];
}
//second loop
for(condition){
[arr addObject:secondLoopValue];
}
//third loop
for(condition){
[arr addObject:thirdLoopValue];
}
最后的结果是 {firstLoopValue...secondLoopValue...thirdLoopValue}
我是 iOS 的新手,所以不确定是否可行。提前致谢
编辑
我已经尝试过如下两种方式:
rCodeArr = [[NSMutableArray alloc] init];
rDateArr = [[NSMutableArray alloc] init];
rAmountArr = [[NSMutableArray alloc] init];
jCodeArr = [[NSMutableArray alloc] init];
jDateArr = [[NSMutableArray alloc] init];
jAmountArr = [[NSMutableArray alloc] init];
jBalanceArr = [[NSMutableArray alloc] init];
NSArray *component = [journal getComponents:custCode];
for(int i = 0; i < [component count]; i++){
list = [component objectAtIndex:i];
NSArray *timestamp = [list.jDate componentsSeparatedByString:@" "];
NSString *splitdate = timestamp[0];
[jCodeArr addObject:list.jCode];
[jDateArr addObject:splitdate];
[jAmountArr addObject:list.jAmount];
[jBalanceArr addObject:list.jOutstanding];
}
NSArray *rcom = [receipt getComponents:custCode];
for(int j = 0; j < [rcom count]; j++){
rList = [rcom objectAtIndex:j];
NSArray *rtime = [rList.rDate componentsSeparatedByString:@" "];
NSString *rsplit = rtime[0];
[rCodeArr addObject:rList.rCode];
[rDateArr addObject:rsplit];
[rAmountArr addObject:rList.rAmount];
[rBalanceArr addObject:@"N/A"];
}
lblOneArray = [NSMutableArray arrayWithArray:rCodeArr];
[lblOneArray addObjectsFromArray:jCodeArr];
lblTwoArray = [NSMutableArray arrayWithArray:rDateArr];
[lblTwoArray addObjectsFromArray:jDateArr];
lblThreeArray = [NSMutableArray arrayWithArray:rAmountArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
lblFourArray = [NSMutableArray arrayWithArray:jBalanceArr];
[lblFourArray addObjectsFromArray:rBalanceArr];
AND
lblOneArray = [[NSMutableArray alloc] init];
lblTwoArray = [[NSMutableArray alloc] init];
lblThreeArray = [[NSMutableArray alloc] init];
lblFourArray = [[NSMutableArray alloc] init];
[lblOneArray addObjectsFromArray:rCodeArr];
[lblOneArray addObjectsFromArray:jCodeArr];
[lblTwoArray addObjectsFromArray:rDateArr];
[lblTwoArray addObjectsFromArray:jDateArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
[lblFourArray addObjectsFromArray:rBalanceArr];
[lblFourArray addObjectsFromArray:jBalanceArr];
但它仍然崩溃并显示消息 ***** Terminating app due to uncaught exception 'NSRangeException',原因:'* -[__NSArrayM objectAtIndex:]: index 5 越界 [0 .. 4]'
注意 所有这些都是 NSMutableArray
就这样
arr = [[NSMutableArray alloc] init];
[arr addObjectsFromArray:anArray1];
[arr addObjectsFromArray:anArray2];
[arr addObjectsFromArray:anArray3];
您可以通过添加如下所示的所有数组来创建最终数组
NSMutableArray *newArray = [[NSMutableArray alloc] init];
[newArray addObjectsFromArray:firstArray];
[newArray addObjectsFromArray:secondArray];
它没有崩溃,因为我已经用下面的代码检查过
NSMutableArray *arr1 = [[NSMutableArray alloc]initWithObjects:@"1", @"2", nil];
NSMutableArray *arr2 = [[NSMutableArray alloc]initWithObjects:@"3", @"4", nil];
NSMutableArray *finalArray = [[NSMutableArray alloc]init];
[finalArray addObjectsFromArray:arr1];
[finalArray addObjectsFromArray:arr2];
要组合多个数组,您可以使用第一个数组的元素初始化数组,然后从中添加元素:
NSMutableArray* arr1 = [NSMutableArray arrayWithArray: firstLoopValue];
[arr1 addObjectsFromArray: secondLoopValue];
[arr1 addObjectsFromArray: thirdLoopValue];
[arr1 addObjectsFromArray: forthLoopValue];
1) 按对象
NSArray *array = [NSArray arrayWithObjects: @"xyz" ,nil];
array = [array arrayByAddingObject:@"abc"];
array = [array arrayByAddingObject:@"kart"];
2) 按数组
NSMutableArray* main = [NSMutableArray arrayWithArray: temp];
[main addObjectsFromArray: temp2];
[main addObjectsFromArray: temp3];
[main addObjectsFromArray: temp4];
我有几个 NSMutableArrays
比如 arr1,arr2,arr3,arr4。如何将所有 NSMutableArrays
合并在一起?或者有没有办法多次追加一个数组?
示例:
arr = [[NSMutableArray alloc] init];
//first loop
for(condition){
[arr addObject:firstLoopValue];
}
//second loop
for(condition){
[arr addObject:secondLoopValue];
}
//third loop
for(condition){
[arr addObject:thirdLoopValue];
}
最后的结果是 {firstLoopValue...secondLoopValue...thirdLoopValue}
我是 iOS 的新手,所以不确定是否可行。提前致谢
编辑 我已经尝试过如下两种方式:
rCodeArr = [[NSMutableArray alloc] init];
rDateArr = [[NSMutableArray alloc] init];
rAmountArr = [[NSMutableArray alloc] init];
jCodeArr = [[NSMutableArray alloc] init];
jDateArr = [[NSMutableArray alloc] init];
jAmountArr = [[NSMutableArray alloc] init];
jBalanceArr = [[NSMutableArray alloc] init];
NSArray *component = [journal getComponents:custCode];
for(int i = 0; i < [component count]; i++){
list = [component objectAtIndex:i];
NSArray *timestamp = [list.jDate componentsSeparatedByString:@" "];
NSString *splitdate = timestamp[0];
[jCodeArr addObject:list.jCode];
[jDateArr addObject:splitdate];
[jAmountArr addObject:list.jAmount];
[jBalanceArr addObject:list.jOutstanding];
}
NSArray *rcom = [receipt getComponents:custCode];
for(int j = 0; j < [rcom count]; j++){
rList = [rcom objectAtIndex:j];
NSArray *rtime = [rList.rDate componentsSeparatedByString:@" "];
NSString *rsplit = rtime[0];
[rCodeArr addObject:rList.rCode];
[rDateArr addObject:rsplit];
[rAmountArr addObject:rList.rAmount];
[rBalanceArr addObject:@"N/A"];
}
lblOneArray = [NSMutableArray arrayWithArray:rCodeArr];
[lblOneArray addObjectsFromArray:jCodeArr];
lblTwoArray = [NSMutableArray arrayWithArray:rDateArr];
[lblTwoArray addObjectsFromArray:jDateArr];
lblThreeArray = [NSMutableArray arrayWithArray:rAmountArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
lblFourArray = [NSMutableArray arrayWithArray:jBalanceArr];
[lblFourArray addObjectsFromArray:rBalanceArr];
AND
lblOneArray = [[NSMutableArray alloc] init];
lblTwoArray = [[NSMutableArray alloc] init];
lblThreeArray = [[NSMutableArray alloc] init];
lblFourArray = [[NSMutableArray alloc] init];
[lblOneArray addObjectsFromArray:rCodeArr];
[lblOneArray addObjectsFromArray:jCodeArr];
[lblTwoArray addObjectsFromArray:rDateArr];
[lblTwoArray addObjectsFromArray:jDateArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
[lblThreeArray addObjectsFromArray:jAmountArr];
[lblFourArray addObjectsFromArray:rBalanceArr];
[lblFourArray addObjectsFromArray:jBalanceArr];
但它仍然崩溃并显示消息 ***** Terminating app due to uncaught exception 'NSRangeException',原因:'* -[__NSArrayM objectAtIndex:]: index 5 越界 [0 .. 4]'
注意 所有这些都是 NSMutableArray
就这样
arr = [[NSMutableArray alloc] init];
[arr addObjectsFromArray:anArray1];
[arr addObjectsFromArray:anArray2];
[arr addObjectsFromArray:anArray3];
您可以通过添加如下所示的所有数组来创建最终数组
NSMutableArray *newArray = [[NSMutableArray alloc] init];
[newArray addObjectsFromArray:firstArray];
[newArray addObjectsFromArray:secondArray];
它没有崩溃,因为我已经用下面的代码检查过
NSMutableArray *arr1 = [[NSMutableArray alloc]initWithObjects:@"1", @"2", nil];
NSMutableArray *arr2 = [[NSMutableArray alloc]initWithObjects:@"3", @"4", nil];
NSMutableArray *finalArray = [[NSMutableArray alloc]init];
[finalArray addObjectsFromArray:arr1];
[finalArray addObjectsFromArray:arr2];
要组合多个数组,您可以使用第一个数组的元素初始化数组,然后从中添加元素:
NSMutableArray* arr1 = [NSMutableArray arrayWithArray: firstLoopValue];
[arr1 addObjectsFromArray: secondLoopValue];
[arr1 addObjectsFromArray: thirdLoopValue];
[arr1 addObjectsFromArray: forthLoopValue];
1) 按对象
NSArray *array = [NSArray arrayWithObjects: @"xyz" ,nil];
array = [array arrayByAddingObject:@"abc"];
array = [array arrayByAddingObject:@"kart"];
2) 按数组
NSMutableArray* main = [NSMutableArray arrayWithArray: temp];
[main addObjectsFromArray: temp2];
[main addObjectsFromArray: temp3];
[main addObjectsFromArray: temp4];