論理的には、これは機能するはずですNSString
が、範囲外の例外がスローされますか?length
expYear
expMonth
expYear = [expDate substringWithRange:NSMakeRange(0, 2)];
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
論理的には、これは機能するはずですNSString
が、範囲外の例外がスローされますか?length
expYear
expMonth
expYear = [expDate substringWithRange:NSMakeRange(0, 2)];
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
範囲は alocation
と alength
であり、開始位置と終了位置ではありません。
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
したがって、開始位置2
と長さで3
、最後をオーバーランします。
正しい仕様に基づいて範囲を変更してください。
範囲は、たとえば 2 から 3 までという意味ではなく、2 から開始して次の 3 つのインデックスに進むという意味なので、この例では 2 ~ 5 になるため、この行は範囲外です。
expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];