2

論理的には、これは機能するはずですNSStringが、範囲外の例外がスローされますか?lengthexpYearexpMonth

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

2 に答える 2

11

範囲は alocationと alengthであり、開始位置と終了位置ではありません。

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

したがって、開始位置2と長さで3、最後をオーバーランします。

正しい仕様に基づいて範囲を変更してください。

于 2014-02-06T15:41:13.913 に答える
4

範囲は、たとえば 2 から 3 までという意味ではなく、2 から開始して次の 3 つのインデックスに進むという意味なので、この例では 2 ~ 5 になるため、この行は範囲外です。

expMonth = [expDate substringWithRange:NSMakeRange(2, 3)];
于 2014-02-06T15:41:44.830 に答える