iPhoneシミュレーターでクラッシュしました:
キャッチされていない例外 'NsRangeException' が原因でアプリを終了しています。理由 NSMutableArray exchangeObjectAtIndex:withObjectAtIndex:]: 境界を超えたインデックス 6 [0 .. 5]'
どうすれば修正できますか?どうも
iPhoneシミュレーターでクラッシュしました:
キャッチされていない例外 'NsRangeException' が原因でアプリを終了しています。理由 NSMutableArray exchangeObjectAtIndex:withObjectAtIndex:]: 境界を超えたインデックス 6 [0 .. 5]'
どうすれば修正できますか?どうも
このクラッシュ ログは、配列があることを説明していますが、インデックス 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
います。インデックスが範囲外です (大きすぎます!)