2016-07-28 8 views
-5

に配列オブジェクトを交換してください。は、私は、私は<strong>multidimetional</strong>配列の配列を交換する必要があり、この</p> <pre><code>array[a][b][c]{number, *array*, number, number} </code></pre> <p>のようなものを<code>multidimensional</code>ある<code>NSMutableArray</code>を持つNSMutableArrayのクラッシュ

私はreplaceObjectAtIndexとし、removeObjectAtIndex/を挿入し、それは両方のケースで墜落してみました。ここで

が私のコードです:

NSMutableArray *arr = [[[NSMutableArray alloc] init] autorelease]; 

NSMutableArray *arrMatched = [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] objectAtIndex:1]; 


if([arrMatched count] > 0) { 
    [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] replaceObjectAtIndex:1 withObject:arr]; 

    // [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] removeObjectAtIndex:1]; 

    // [[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] insertObject:arr atIndex:1]; } 

アップデート: 私は、トレースに以下を参照してください。

2016年7月28日23:35:15.818 WP [2213:52307] ***終端原因 キャッチされない例外 'NSInternalInconsistencyException' へのアプリは、理由: -

'[__ NSCFArray replaceObjectAtIndex:withObject::]変異メソッドは、不変オブジェクトへ を送りました'

[[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] removeObjectAtIndex:0]; 

[[[[self.scoreTable objectAtIndex:a] objectAtIndex:b ] objectAtIndex:c] 
insertObject:[NSNumber numberWithBool:YES] atIndex:0]; 

更新: 内側の配列は次のように作成されます

NSMutableArray *arrayOfLevelInfo = [[[NSMutableArray alloc] init] 
autorelease]; 
[arrayOfLevelInfo addObject:[NSNumber numberWithBool:NO]]; 
NSMutableArray *pairs = [[NSMutableArray alloc] 
initWithCapacity:8]; [arrayOfLevelInfo addObject:pairs]; 
[arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]]; 
[arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]]; 
[arrayOfLevelInfo addObject:[NSNumber numberWithInt:0]]; 

私も同じクラッシュ私はのNSNumberを交換していた場合(インデックス0)を得ました

+4

クラッシュログをポストします。 –

+0

配列の可変コピーを作成する必要があります – WMios

+0

インデックスcに格納されている配列がNSMutableArrayではなくNSArrayであるように見えます。これをNSMutableArrayにすると、このクラッシュは消えるはずです。 – ghostatron

答えて

1

目的コードCに多次元可変配列が存在しません。すべての配列は単一淡色ですすべてのサブアレイを作成する必要があります。

self.scoreTable = [[NSMutableArray alloc] init]; 
for (int i = 0; i < 10; i++) { 
NSMutableArray * a = [[NSMutableArray alloc] init]; 
[self.scoreTable addObject: a]; 
for (int j = 0; j < 10; j++) { 
    NSMutableArray * b = [[NSMutableArray alloc] init]; 
    [a addObject: b]; 
    for (int k = 0; k < 10; k++) { 
    NSMutableArray * c = [[NSMutableArray alloc] init]; 
    [b addObject: c] 
    for (int l = 0; l < 10; l++) { 
     [c addObject: [NSNumber numberWithInt:l]; 
    } 
    } 
} 
+0

私は、すべてのサブアレイを作成しました。 –

+0

...あなたのサブアレイは変更可能ではありませんが、私のサブアレイは変更可能ではありません。 –

関連する問題

 関連する問題