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.
归档时间: |
|
查看次数: |
22362 次 |
最近记录: |