I am trying to add an object to an NSMutableArray
. Initially I assign some response data to the array, and can display it in a table view. After loading more data, it seems to be crashing when trying to add the new information to my original array.
I am using AFNetworking for this:
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
if(!_myArray){
_myArray = [responseObject objectForKey:@"data"];
}
else{
[_myArray addObject:[responseObject objectForKey:@"data"]];
}
[self.tableView reloadData];
}
The error I am getting is as follows
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
Can anybody help out with this?
You need to make the copy of your array. After that you have to modify that array using,
[NSMutableArray arrayWithArray: ]
It sounds like AFNetworking generates immutable objects. You should call
-mutableCopy
instead of just assigning the result of-objectForKey:
directly.Also are you really intending to have a bunch of nested arrays? It seems like it would make more sense if you added the contents of the response array, rather than the array itself.
Your array is must be mutable array
Use NSMutablearray instead NSArray
The object you're retrieving from the
responseObject
dictionary is most likely not anNSMutableArray
, but an (immutable)NSArray
. You have to create a mutable copy to be able to change it: