0

配列の最初の次元が可変のままである間に mutableCopy を使用すると、配列内のすべての配列が不変になったようです。

私の現在のコードは効果がないようで、配列を編集しようとすると NSInvalidArgumentException が発生します。

このコードは、入力 (3 次元配列) のディープ コピーを作成し、それが変更可能であることを確認する必要があります。

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

}

4

1 に答える 1

0

申し訳ありませんが、コードが少し抜けていたようです。copylayertwo = [[[copy objectAtIndex:arraycount] objectAtIndex:arraycountTwo] mutableCopy] autorelease; である必要があります。

また、ループの長さに間違った変数を入れてカウンターをリセットしたようです。

夜更かしやめようかな…

于 2012-06-13T07:38:35.473 に答える