2012-06-13 3 views
0

Кажется, что когда я использую mutableCopy, в то время как первое измерение массивов остается изменяемым, но все массивы внутри массива становятся неизменными.Как преобразовать 3d неизменяемый массив в изменяемый массив?

Мой текущий код, кажется, не имеет эффекта, и попытка редактирования массива приводит к исключению NSInvalidArgumentException.

Код должен сделать глубокую копию ввода (3D-массив), а затем убедиться, что он изменен.

-(NSMutableArray*) copyMutable :(NSMutableArray*) input{ 
NSMutableArray* copyInput = [[input mutableCopy] autorelease]; 
NSMutableArray* copy = 
[[[NSMutableArray alloc] initWithArray:copyInput copyItems:YES] autorelease]; 
NSMutableArray* copylayer; 
NSMutableArray* copylayertwo; 

arraycount=0; 
arraycountTwo=0; 
arraycountThree=0; 
NSMutableArray* inputCopy = [[[NSMutableArray alloc] init]autorelease]; 
for (int a=0; a<[inputCopy count]; a++){ 
    copylayer=[[[copy objectAtIndex:arraycount] mutableCopy]autorelease]; 
    [copy replaceObjectAtIndex:arraycount withObject:copylayer]; 
    for (int b=0; b<[inputCopy count]; b++){ 
     copylayertwo = [[copy objectAtIndex:arraycount] objectAtIndex:arraycountTwo]; 
     [[copy objectAtIndex:arraycount] replaceObjectAtIndex:arraycountTwo withObject:copylayertwo]; 

     arraycountTwo++; 
    } 
    arraycount++; 
} 
return copy; 

}

ответ

0

К сожалению мой плохой ... Кажется, что я пропустил немного кода. Он должен быть copylayertwo = [[[copy objectAtIndex: arraycount] objectAtIndex: arraycountTwo] mutableCopy] autorelease;

Также кажется, что я ввел неправильную переменную для длины цикла и сбросил счетчики.

Я должен остановиться до позднего вечера ...

Смежные вопросы