0

iPhoneシミュレーターでクラッシュしました:

キャッチされていない例外 'NsRangeException' が原因でアプリを終了しています。理由 NSMutableArray exchangeObjectAtIndex:withObjectAtIndex:]: 境界を超えたインデックス 6 [0 .. 5]'

どうすれば修正できますか?どうも

4

1 に答える 1

2

このクラッシュ ログは、配列があることを説明していますが、インデックス 6 を参照しているのに対し、配列には 6 つのオブジェクトしかありません。これは、以下の注釈に示すように、インデックスが 0 からカウントを開始するため、5 つのインデックスが必要であることを意味します。

配列 (

最初のオブジェクト - インデックス 0

2 番目のオブジェクト - インデックス 1

3 番目のオブジェクト - インデックス 2

4 番目のオブジェクト - インデックス 3

5 番目のオブジェクト - インデックス 4

6 番目のオブジェクト - インデックス 5

)

いずれexchangeObjectAtIndex:withObjectAtIndex:かで 6 のインデックスを指定しましたが、インデックスが 5 つしかないため、機能しません。

動作するデモの例を次に示します。

[array exchangeObjectAtIndex: 5 withObjectAtIndex: 2]; 

両方のインデックスが配列に対して有効であるため、これは完全に有効です。

これは非常に明白な名前を持つ として知られてNSRangeExceptionいます。インデックスが範囲外です (大きすぎます!)

于 2012-12-16T14:55:48.277 に答える