出于某种原因,这让我今天绊倒了。
我有一个NSString我正在尝试使用-rangeOfString:options:range:
进行搜索,并且我一直收到此异常。我在做什么:
我正在搜索字符串,试图在某个字符索引之后找到下一个换行符(因此,给定索引i
,在此之后找到下一个出现的@"\n"
。我有i
,现在我正在寻找下一个换行符(这是在NSTextView
子类中)
NSRange untilReturn = [wholeString rangeOfString:@"\n" options:kNilOptions range:NSMakeRange(startLocation, [wholeString length] - 1)];
其中wholeText
是textView的全文,startLocation
是i
。
但是当我运行这个时,我得到一个超出范围的例外,我似乎无法弄清楚出了什么问题。有人可以帮忙吗?
答案 0 :(得分:2)
NSMakeRange
的第二个参数是 length (来自第一个参数)。除非startLocation
始终为0(我认为不是),否则你的长度将会太长。您实际上希望第二个参数为[wholeString length] - startLocation
)。
答案 1 :(得分:0)
很简单!在我的特定情况下,我使用方法-lineRangeForRange:
要好得多。我完全忘记了那个API。所以代码如下所示:
NSRange lineRange = [wholeString lineRangeForRange:originalRange];
NSString *lineString = [wholeString substringWithRange:lineRange];