Skip navigation.
 
mlusing copy in nested NSMutableArrays gives immutable objects?
FROM : Randy
DATE : Sun Nov 16 06:56:00 2008

In my program I have nested NSMutableArrays, i.e., each element in a 
root NSMutableArray is a NSMutableArray.

When I try to grab one of the element NSMutableArrays ......
NSMutableArray *copyOfCurrent = (NSMutableArray *) [[walkerArray 
objectAtIndex:lastNodeInCurrent] copy];//walkerArray is another 
NSMutableArray

As soon as I try to alter (insert an element for example) 
copyOfCurrent I get a "NSInternalInconsistencyException" with the 
message "mutating method sent to immutable object".  It looks like 
either the objectAtIndex or the copy method is providing something 
immutable, not an NSMutableArray.

Any idea why that might be happening?

I was able to get around the problem by creating a new NSMutableArray 
and loading into it the contents of the immutable one like ..

NSMutableArray *copyOfCurrent = (NSMutableArray *) [[walkerArray 
objectAtIndex:lastNodeInCurrent] copy];
NSMutableArray *fixError = [[NSMutableArray alloc] init];
int k;
for (k = 0; k < [copyOfCurrent count]; k++)
{
   fixError[k] = copyOfCurrent[k];
}

But that seems hokey and I would like to understand the cause of the 
original issue.

Thanks;

Randy

Related mailsAuthorDate
mlusing copy in nested NSMutableArrays gives immutable objects? Randy Nov 16, 06:56
mlRe: using copy in nested NSMutableArrays gives immutable objects? Nathan Kinsinger Nov 16, 07:11