Reputation: 145
I declared a NSArray
object in .h file as
@property (nonatomic, assign) NSArray *scnArray;
and in .h file under - (void)viewDidLoad
I created three different NSArray
objects as
NSArray *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
[scnArray arrayByAddingObjectsFromArray:obj2];
[scnArray arrayByAddingObjectsFromArray:obj3];
and if I access this scnArray from any other function
NSArray *caseArray = [scnArray objectAtIndex:index];
//index will be 0, 1, 2...
I am getting BAD_ACCESS_ERROR
. What is the problem here and how can I correct to use it?
Upvotes: 9
Views: 16996
Reputation: 22810
Try this :
NSArray *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj2];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj3];
The arrayByAddingObjectsFromArray:
function adds all objects from array B to array A, and return the result (=the array containing both A's and B's elements).
So, you should simply GET that result... :-)
IMPORTANT : scnArray
MUST be an NSMutableArray
array, and NOT an NSArray
(it's changing, right?); so make sure you edit that part too...
ALSO : NSArray *caseArray = [scnArray objectAtIndex:index];
- this doesn't make any sense. Setting an array to an ELEMENT of the scnArray
? It doesn't contain arrays, right? It just contains ELEMENTS of those arrays (the ones we've added)...
Upvotes: 7
Reputation: 86651
arrayByAddingObject:
does not add the new object to the receiver, it creates a completely new array and returns it. You should use something like:
scnArray = [[NSArray alloc] initWithObjects: obj1, obj2, obj3, nil];
Don't forget that if you are not using ARC or GC, all of these arrays will need to be released at some point.
Upvotes: 2