こんにちは私はいくつかの検証ルールで古いプロジェクトを使っています。iOS objective c substringToIndexクラッシュ
私の問題では、特定の文字が少ないバーコードスキャン文字列がほとんどありません。プログラムは、ここで
if ([[sBarcodeValues substringToIndex:6] isEqualToString:@"2C2C2P"]){
}
が文字列のみ含まれているため、エラーログ(詳細を怒鳴る絵で含まれている)
2016-12-22 14:51:56.019324 SAMKiosk[1008:476815] -[ScanAndPayVC checkBarCodeDetail]: sBarcodeValues 11.10
2016-12-22 14:51:56.019839 SAMKiosk[1008:476815] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSTaggedPointerString substringToIndex:]: Index 6 out of bounds; string length 5'
*** First throw call stack:
(0x1889611b8 0x18739855c 0x188961100 0x189386e80 0x1002ad930 0x1002a8320 0x1002a5bb8 0x19019ca54 0x19019c5f0 0x18b2b1d94 0x18b2d0dcc 0x10070d218 0x100719334 0x100727f94 0x10070f300 0x10071a8ac 0x100710ce0 0x10071205c 0x18890e810 0x18890c3fc 0x18883a2b8 0x18a2ee198 0x18e87a7fc 0x18e875534 0x1000e0414 0x18781d5b8)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
がかもしれませあるコード
の次の行のためにクラッシュしますチェックが必要な場合は5文字6.このクラッシュを防ぐにはどうすればよいですか?助けは大いに感謝しています。ありがとう
あなたは文字列の長さを超える範囲に直接アクセスしています – Joshua
'if([sBarcodeValues containsString:@" 2C2C2P "])' – iphonic
@iphonicいいえ、それは同じチェックではありません。 – rmaddy