尝试比较由Web服务返回的字段,该字段仅包含字符串truefalse(是的,它是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]);
并不是NSNullNULL不是同一件事; NSNull是一个类,其单例实例表示不接受nil作为值的容器(及其他事物)中的“无值”。

当该崩溃发生时,withOptions指的是NSNull的实例。

关于objective-c - [NSNull isEqualToString:]:无法识别的选择器已发送到实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5965817/

10-12 05:39