2010-10-25 4 views
5

Я хочу выделить некоторые объекты из массива. Поэтому я использую начальные и конечные индексы моего выбора.indexSetWithIndexesInRange не делает ожидаемого

NSLog(@"start:%d\nend:%d", startIndex, endIndex); 
NSIndexSet *myIndexes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(startIndex, endIndex)]; 
NSLog(@"%d", [myIndexes lastIndex]); 

Первый NSLog дает мне

STARTINDEX: 49
ENDINDEX: 67

Второй NSLog дает мне

Почему у меня есть 115 наивысших чисел? Это должно быть 67. Конечно, приложение падает:

Нагрузочный приложение из-за неперехваченного исключением 'NSRangeException', причина: "* - [NSArray objectsAtIndexes]: индекс 115 за пределами [0 .. 96] '

Что я делаю неправильно?

ответ

16

NSRange членов «S являются location и length, не start и end. Это означает, что вам необходимо создать структуру NSRange следующим образом:

NSMakeRange(startIndex, endIndex - startIndex); 
+0

Это спасло меня много времени и энергии! – user3687