NSString范围或索引超出范围

时间:2012-10-11 16:51:33

标签: cocoa nsstring

出于某种原因,这让我今天绊倒了。

我有一个NSString我正在尝试使用-rangeOfString:options:range:进行搜索,并且我一直收到此异常。我在做什么:

我正在搜索字符串,试图在某个字符索引之后找到下一个换行符(因此,给定索引i,在此之后找到下一个出现的@"\n"。我有i,现在我正在寻找下一个换行符(这是在NSTextView子类中)

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

其中wholeText是textView的全文,startLocationi

但是当我运行这个时,我得到一个超出范围的例外,我似乎无法弄清楚出了什么问题。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

NSMakeRange的第二个参数是 length (来自第一个参数)。除非startLocation始终为0(我认为不是),否则你的长度将会太长。您实际上希望第二个参数为[wholeString length] - startLocation)。

答案 1 :(得分:0)

很简单!在我的特定情况下,我使用方法-lineRangeForRange:要好得多。我完全忘记了那个API。所以代码如下所示:

NSRange lineRange = [wholeString lineRangeForRange:originalRange];
NSString *lineString = [wholeString substringWithRange:lineRange];