NSRange给出了荒谬的位置

Sea*_*ser 3 nsstring ios

我正在经历这种奇怪的效果,在rangeOfString上调用location时它应该返回一个非常大的值,当它不应该...

我的代码看起来像这样:

NSRange range = [string rangeOfString:subString];
NSLog(@"range is %@", NSStringFromRange(range));
Run Code Online (Sandbox Code Playgroud)

这会退出 range is {2147483647, 0}

无法弄清楚为什么.

可能导致此问题的一些事情:

  • 子字符串是使用NSString的initWithBytes方法从字节数组生成的
  • 子字符串告诉我它是一个NSCFString*但是也说'变量不是NSString'
  • 子字符串按预期在控制台中记录

任何帮助非常感谢

这是一些让我感到奇怪的东西:

在此输入图像描述

8vi*_*ius 6

这只是意味着您的子字符串不存在于您的字符串中,请执行以下操作来验证这一点:

NSRange range = [string rangeOfString:subString];
if (range.location == NSNotFound) {
  NSLog(@"String not found");
} else {
  NSLog(@"range is %@", NSStringFromRange(range));
}
Run Code Online (Sandbox Code Playgroud)

  • 这是因为NSString是一个类集群. (2认同)