0

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

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

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

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

wholeTexttextView 的全部文本在哪里,startLocationi.

但是当我运行它时,我得到了一个越​​界异常,我似乎无法弄清楚出了什么问题。有人可以帮忙吗?

4

2 回答 2

2

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

于 2012-10-11T16:55:23.453 回答
0

这很简单!在我的特殊情况下,我最好使用 method -lineRangeForRange:。我完全忘记了那个 API。所以代码如下所示:

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