尝试比较由Web服务返回的字段,该字段仅包含字符串true
或false
(是的,它是STRING而不是布尔值),因此我尝试将其与另一个类似的字符串进行比较:
if ([withOptions isEqualToString:@"true"]) {
annotation.stationLavage=@"with";
}else {
annotation.stationLavage=@"without";
}
因此,当
withOptions
字符串包含“true”字符串时,一切正常,而当它包含“false”字符串时,我在日志中得到此异常:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull isEqualToString:]: unrecognized selector sent to instance 0x2984d68'
我很确定,在所有情况下,
withOptions
都包含一个字符串值(“true”或“false”),并且永远不包含NULL。 最佳答案
我很确定在所有情况下
withOptions包含一个字符串值
(“true”或“false”)及其
从不包含NULL。
显然,这种假设是错误的。 :)
在该if()
语句之前的行上,添加NSLog(@"%@ - %@", withOptions, [withOptions class]);
并不是NSNull
和NULL
不是同一件事; NSNull
是一个类,其单例实例表示不接受nil
作为值的容器(及其他事物)中的“无值”。
当该崩溃发生时,withOptions
指的是NSNull
的实例。
关于objective-c - [NSNull isEqualToString:]:无法识别的选择器已发送到实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5965817/