0

どういうわけか、これは今日私をつまずかせています。

を使用して検索しようとしているNSStringがあり、-rangeOfString:options:range:この例外が発生し続けます。私がしていること:

特定の文字インデックスの次の改行文字を見つけようとして文字列を検索しています(したがって、インデックスが与えられた場合i、その後の次の出現箇所を見つけます@"\n")。私は持っていますi、今私はそのような次の改行を探しています(これはNSTextViewサブクラスにあります)

NSRange untilReturn = [wholeString rangeOfString:@"\n" options:kNilOptions range:NSMakeRange(startLocation, [wholeString length] - 1)];

wholeTexttextViewの全文はどこにあり、startLocationはですi

しかし、これを実行すると、範囲外の例外が発生し、何が問題になっているのか理解できないようです。誰かが手を貸すことができますか?

4

2 に答える 2

2

の2番目のパラメーターNSMakeRangeは、(最初​​のパラメーターからの)長さです。が常に0でない限りstartLocation(そしてそうではないと思います)、あなたの長さは長すぎるでしょう。実際には、2番目のパラメーターを[wholeString length] - startLocation)にします。

于 2012-10-11T16:55:23.453 に答える
0

簡単だ!私の特定のケースでは、メソッドを使用する方がはるかに優れていました-lineRangeForRange:。そのAPIをすっかり忘れてしまいました。したがって、コードは次のようになります。

NSRange lineRange = [wholeString lineRangeForRange:originalRange];
NSString *lineString = [wholeString substringWithRange:lineRange];
于 2012-10-11T18:54:44.927 に答える