2

これは私が得ている非常に奇妙なエラーです。それはこれです:

'NSRangeException', reason: '*** -[NSArray subarrayWithRange:]: range {2, 3} extends beyond bounds [0 .. 3]'

私が理解していないのは、範囲 (2,3) が明らかに範囲 (0,3) の境界を超えていないことです。

実際、配列と範囲を次のように設定したため、これらの境界内にあります。

NSRange range = NSMakeRange([wordArray indexOfObject:letterInWordArray]+1,wordArray.count-1);
NSMutableArray* sortedSubArray = [[NSMutableArray alloc] initWithArray:[wordArray subarrayWithRange:range]];

基本的に、wordArray という配列を反復処理していますが、まだ反復処理していないすべてのアイテムであるサブ配列を作成したいと考えています。誰か助けてくれませんか?

4

1 に答える 1

6

私が理解していないのは、範囲 (2,3) が明らかに範囲 (0,3) の境界を超えていないことです。

の 2 番目の要素NSRangeはその長さなので(2, 3)、インデックス23、およびが含まれます4

したがって、[wordArray indexOfObject:letterInWordArray]ゼロより大きい値を返す場合、返される範囲は、対応する配列の制限を超えて拡張されます。

これを修正するには[wordArray indexOfObject:letterInWordArray]、最初に変数に代入してから、その数値を全長から引きます。これにより、一致位置から配列の最後までの範囲が得られます。

于 2014-07-19T23:42:02.233 に答える