Objective c 带范围崩溃的子字符串

Objective c 带范围崩溃的子字符串,objective-c,substring,nsrangeexception,Objective C,Substring,Nsrangeexception,我有个奇怪的问题。以下子字符串代码与一起崩溃 NSString *string4 = @"<p>some</p><img></img><p></p>end of the story": [string4 substringWithRange:NSMakeRange(7, [string4 length] - 1)]; 我假设范围在边界内,但它仍然崩溃。 知道为什么会这样吗? 下面是它显示的错误 *由于未捕获的异常“NSRa

我有个奇怪的问题。以下子字符串代码与一起崩溃

NSString *string4 = @"<p>some</p><img></img><p></p>end of the story":
[string4 substringWithRange:NSMakeRange(7, [string4 length] - 1)];
我假设范围在边界内,但它仍然崩溃。 知道为什么会这样吗? 下面是它显示的错误

*由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[\u NSCFConstantString substringWithRange:]:范围或索引超出范围” *第一次抛出调用堆栈: 0x1c92012 0x10cfe7e 0x1c91deb 0x1c6aaa4 0x2bbc 0xf51c7 0xf5232 0x443d5 0x4476f 0x44905 0x4d917 0x27c5 0x11157 0x11747 0x1294b 0x23cb5 0x24beb 0x16698 0x1beddf9 0x1bedad0 0x1c07bf5 0x1c07962 0x1c38bb6 0x1c37f44 0x1c37e1b 0x1217a 0x13ffc 0x24fd 0x2425 libc++abi.dylib:terminate调用引发异常 lldb

NSMakeRange7,[string4长度]-1

此范围从字符串开头开始7个字符,在字符串结束后结束6个字符

范围由起始位置和距该位置的所需长度组成

NSMakeRange7,[string4长度]-1

此范围从字符串开头开始7个字符,在字符串结束后结束6个字符

范围由起始位置和距该位置的所需长度组成。

NSMakeRange的第二个参数是子字符串中包含的字符数。因此,它必须不超过[string4 length]-7,因为范围的起始位置是7。试试这个:

NSString *string4 = @"<p>some</p><img></img><p></p>end of the story":
NSUInteger start = 7;
[string4 substringWithRange:NSMakeRange(start, [string4 length] - start - 1)];
NSMakeRange的第二个参数是要包含在子字符串中的字符数。因此,它必须不超过[string4 length]-7,因为范围的起始位置是7。试试这个:

NSString *string4 = @"<p>some</p><img></img><p></p>end of the story":
NSUInteger start = 7;
[string4 substringWithRange:NSMakeRange(start, [string4 length] - start - 1)];

第一行末尾是冒号吗?它应该是分号;?你的范围比你的绳子大。substringWithRange:如果尝试获取字符串外部的子字符串,将引发异常。NSMakeRange的参数是起点和长度,而不是起点和终点。在第一行的末尾,它是冒号吗?它应该是分号;?你的范围比你的绳子大。substringWithRange:如果尝试获取字符串外部的子字符串,将引发异常。NSMakeRange的参数是起点和长度,而不是起点和终点。Arghh,我的错。我认为第二个参数是结束索引。我在这件事上浪费了很多时间。谢谢!啊,我的错。我认为第二个参数是结束索引。我在这件事上浪费了很多时间。谢谢!