Я пытаюсь найти ответ на проблему, которая меня озадачивала с прошлой ночи.ObjC/Cocoa NSRange: Диапазон или индекс за пределами
NSRange searchRange.location = 0;
NSRange searchRange.length = [string length]; // > 2000 characters long
NSString *substring = @"substring"; // Occurs within string several times
NSRange substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
// Some code here. Create substring and add it to array.
// Move the search range on
searchRange.location = substringRange.location + substringRange.length;
// fails
substringRange = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:searchRange];
Первая [строка rangeOfString ...] метод вызывается без сучка, но результаты второго вызова в следующей ошибке:
* -[__NSCFString rangeOfString:options:range:locale:]: Range or index out of bounds
Из того, что я могу сказать, что проблема вызвана путем присвоения нового значения searchRange.location - удаление этого оператора приводит к успешному второму вызову метода. Рассматривая отладчик, значения кажутся такими же предсказанными - ничего вне диапазона - и я остаюсь кричать на мониторе.
Это просто простое дополнение ... не так ли?
Вы, вероятно, не хотите дважды объявлять 'NSRange searchRange' дважды. –
Я понятия не имею, что вы пытаетесь сделать. – Radu
@ Radu выполняет арифметику по структуре? – Kreiri