Nik*_*iko 8 xcode loops for-loop objective-c
我试图逐个字符地循环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 .");
}
}
Run Code Online (Sandbox Code Playgroud)
非常感谢!
tas*_*oor 30
字符不是对象.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
Run Code Online (Sandbox Code Playgroud)
注意,'a'是字符,"a"是C字符串,@"a"是NSString.它们都是不同的类型.
当你使用%@unichar ch时NSLog,它试图从内存位置打印一个ch无效的对象.因此,您获得了EXC_BAD_ACCESS.