cocoa - NSString 范围或索引超出范围

标签 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

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

最佳答案

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

关于cocoa - NSString 范围或索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844638/

相关文章:

objective-c - COCOA: 无法点击取消按钮,UI 挂起且无响应,如何处理?

ios - 很多关于 NSString 引用计数的问题

objective-c - NSString 声明

objective-c - 如何以编程方式启用/禁用 mac 内置键盘

objective-c - 跟踪所有 Objective-C 的 alloc/allocWithZone/dealloc

cocoa - 菜单项操作的用户身份验证

macos - 热衷于在 MAC OS X 中获取格式为 "en_US"的键盘布局语言和区域设置?

ios - 如何在 objective-c 中的多个标签上显示文本文件中的随机单词

ios - iOS 7 警告之前的对齐或自然文本对齐

ios - 在表示 URL 的 NSString 的两个斜杠字符之间提取子字符串