1

昨夜から頭を悩ませていた問題の答えを見つけようとしています。

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];

最初の [string rangeOfString...] メソッドは問題なく呼び出されますが、2 番目の呼び出しで次のエラーが発生します。

* -[__NSCFString rangeOfString:options:range:locale:]: 範囲またはインデックスが範囲外です

私が知る限り、問題は searchRange.location への新しい値の割り当てによって引き起こされます。そのステートメントを削除すると、メソッドへの 2 回目の呼び出しが成功します。デバッガーを見ると、値は予測どおりのように見えます (範囲外のものは何もありません)。私はモニターに向かって叫んでいます。

単純な足し算…ですね。

4

1 に答える 1