我想检查字符串的长度,但是当代码执行并且命中IF
语句时,我得到unrecognized selector
。为什么长度不适用于NSString?
字典中的价值是一个字符串。
NSString * checkString = [myDictionary objectForKey:@"somekey"];
NSLog(@"length: %lu", (unsigned long)[checkString length]);
if([checkString length] > 0){
}
ERROR从控制台:
长度:0
[__NSCFNumber长度]:无法识别的选择发送到实例
为了简单:
NSString * checkString = @"my string"; //[myDictionary objectForKey:@"somekey"];
NSLog(@"length: %lu", (unsigned long)[checkString length]);
if([checkString length] > 0){
}
长度:9
[__NSCFNumber长度]:无法识别的选择发送到 实例
为什么呢?
尝试施放[myDictionary objectForKey:@“somekey”]来的NSString或使用字符串在withFormat –
根据到错误,它是一个'NSNumber'而不是'NSString'这不是因为你把它作为'NSString'转换成它是'NSString'。但奇怪的是,它正确地记录了“长度:%lu”,所以问题就在它之后,导致崩溃的代码是什么?如果你做'[[myDictionary objectForKey:@“somekey”] isKindOfClass:[NSString class]]返回TRUE? – Larme
如果那是你真实的代码,那么这个输出就没有意义了。这实际上是你正在运行的真正的代码复制粘贴到你的问题?你确定NSLog和if语句都指向同一个变量? – dan