Эта ошибка может быть вызвана ошибками вложения в коде, предшествующем строке. Это может не иметь ничего общего с самой линией. Проверьте и / или опубликуйте код над строкой, где произошла ошибка.
Если сообщение об ошибке, которое вы отправили, является фактическим сообщением, которое вы вернули, то у вас есть простая опечатка написания NSRangeExpected для NSRangeException.
Обновление:
Ладно, еще раз просматриваю, ответ прост, и я просто пропустил это. NSException
- это класс, но NSRangeException
- это имя, определенное в строковой константе:
extern NSString *NSRangeException;
... которая просто возвращает строку "NSRangeException".
Очевидно, @catch
ожидает получить объект NSException
, но вместо этого получает объект NSString.
Вы можете настроить @catch
для приема строки, подобной этой:
@catch(NSString *stringException){...
или
@catch(id idException){...
... но обычно нет причин для этого.
Вы используете NSRangeException и другие имена исключений для проверки на name
экземпляра NSException
, который @catch
перехватывает.