我试图逐个字符地循环遍历 NSString,但出现 EXC_BAD_ACCESS 错误。您知道如何正确执行此操作吗?我已经在谷歌上搜索了几个小时但无法弄清楚。
这是我的代码(.m):
self.textLength = [self.text length];
for (int position=0; position < self.textLength; position++) {
NSLog(@"%@", [self.text characterAtIndex:position]);
if ([[self.text characterAtIndex:position] isEqualToString:@"."]){
NSLog(@"it's a .");
}
}
多谢!
人物不是对象。characterAtIndex
回报unichar
,这实际上是一个整数类型unsigned short
。你需要使用%C
代替%@
in NSLog
。而且角色也不是一个NSString
,所以你不能发送它isEqualToString
。你需要使用ch == '.'
比较ch
反对'.'
.
unichar ch = [self.text characterAtIndex:position];
NSLog(@"%C", ch);
if (ch == '.') {} // single quotes around dot, not double quotes
注意,'a'
是性格,"a"
是 C 字符串并且@"a"
是 NSString。他们都是不同的类型。
当您使用时%@
与单字符ch
in NSLog
,它试图从内存位置打印一个对象ch
这是无效的。因此,您将获得 EXC_BAD_ACCESS。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)