Выход за пределы размера 4 объектива с

У меня есть NSString из length 4. По логике, это должно работать, и expYear делает, но expMonth создает исключение вне пределов?

expYear = [expDate substringWithRange:NSMakeRange(0, 2)];
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];

2 ответа

Решение

Диапазон location и length, не начальная и конечная позиция.

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

Так с начальным местоположением 2 и длина 3 ты опустошил конец.

Измените диапазон, основываясь на правильной спецификации.

Диапазон не означает, скажем, от 2 до 3, это, скажем, начало от 2 до следующих 3 индексов, так что в этом примере вы получите 2-5, так что эта строка выходит за пределы:

expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
Другие вопросы по тегам