3

rangeOfString の呼び出し元の場所が非常に大きな値を返してはならないときに、この奇妙な効果が発生しています...

私のコードは次のようになります。

NSRange range = [string rangeOfString:subString];
NSLog(@"range is %@", NSStringFromRange(range));

これはログアウトしますrange is {2147483647, 0}

正確な理由がわかりません。

これを引き起こしている可能性のあるいくつかのこと:

  • 部分文字列は、NSString の initWithBytes メソッドを使用してバイト配列から生成されます
  • 部分文字列は、それが NSCFString * であることを示していますが、「変数は NSString ではありません」とも言っています
  • 部分文字列は、期待どおりにコンソールに記録されます

どんな助けでも大歓迎です

ここに私を奇妙に感じさせるものがあります:

ここに画像の説明を入力

4

1 に答える 1

6

これは、部分文字列が文字列に存在しないことを意味します。これを確認するには、次の手順を実行します。

NSRange range = [string rangeOfString:subString];
if (range.location == NSNotFound) {
  NSLog(@"String not found");
} else {
  NSLog(@"range is %@", NSStringFromRange(range));
}
于 2012-09-26T00:30:30.220 に答える