2014-07-19 3 views
1

이것은 매우 이상한 오류입니다. (0.3)범위를 사용하여 부분 배열을 만들 때 NSRangeException이 throw됩니다.

사실, 그것은 내

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

내가 이해할 수없는 것은 범위 (2,3) 명확하게 범위 밖으로 범위를하지 않는다는 것입니다 : 그것은이입니다 나는 배열을 설정하고 범위과 같이 그 경계 때문에 : 나는 wordArray라는 배열을 반복하고 본질적으로

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

, 나는 아직 통해 반복되지 않은 모든 항목을하는 부분 배열을 만들려면 . 누구든지 나를 도울 수 있습니까?

답변

2

내가 이해하지 못하는 것은 범위 (2,3) 명확하게 범위 밖으로 범위를하지 않는다는 것입니다 (0,3)

이 수행합니다 NSRange의 두 번째 요소를 는 길이이므로 (2, 3)은 인덱스 2, 34을 포함합니다.

따라서 [wordArray indexOfObject:letterInWordArray]이 0보다 큰 값을 반환하는 경우 가져 오는 범위는 해당 배열의 제한을 벗어나 확장됩니다.

이 문제를 해결하려면 먼저 [wordArray indexOfObject:letterInWordArray]을 변수에 할당 한 다음 전체 길이에서 해당 숫자를 뺍니다. 이렇게하면 일치 위치에서 배열의 끝까지 범위가 확장됩니다.