Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective C How to merge multiple NSMutableArray?

I have few NSMutableArrays such as arr1,arr2,arr3,arr4. How can I merge all the NSMutableArrays together? Or is there any way to append in one array multiple times?

Example:

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];
}

And at the end final result {firstLoopValue...secondLoopValue...thirdLoopValue}

I am new to iOS that's why not sure if it's possible. Thanks in advance

EDIT I have tried in both ways like below:

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

But it's still crashing with the message ***** Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayM objectAtIndex:]: index 5 beyond bounds [0 .. 4]'

NOTE All these are NSMutableArray

like image 804
Julfikar Avatar asked Dec 10 '25 17:12

Julfikar


2 Answers

You can create a final array by adding all array like below

NSMutableArray *newArray = [[NSMutableArray alloc] init];

[newArray addObjectsFromArray:firstArray];

[newArray addObjectsFromArray:secondArray];

It is not crashing as I have checked with below code

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];
like image 81
Neha Gupta Avatar answered Dec 13 '25 05:12

Neha Gupta


To combine multiple arrays you can initialize array with elements of the 1st array and then add elements from it:

NSMutableArray* arr1 = [NSMutableArray arrayWithArray: firstLoopValue];
[arr1 addObjectsFromArray: secondLoopValue];
[arr1 addObjectsFromArray: thirdLoopValue];
[arr1 addObjectsFromArray: forthLoopValue];
like image 35
Ved Rauniyar Avatar answered Dec 13 '25 05:12

Ved Rauniyar