- [NSNull objectForKeyedSubscript:]:发送到实例的无法识别的选择器

Boo*_*oon 11 objective-c

我得到一个例外,说:

-[NSNull objectForKeyedSubscript:]: unrecognized selector sent to instance

它是说我试图NSNull用密钥访问一个对象吗?知道导致这种情况的原因以及如何解决或进一步调试?

Hot*_*cks 14

修复它的方法是不在NSNull对象上尝试objectForKeyedSubscript.(我打赌你正在处理一些JSON数据,并且没有为NULL值做好准备.)

(显然,objectForKeyedSubscript是新数组[x]符号转换成的内容.)

(注意,您可以通过简单地与==to 进行比较来测试NSNull [NSNull null],因为应用程序中只有一个NSNull对象.)

  • @Boon - 正如Mike D所说,在字典上使用无效键只会返回一个零 - 没有例外.数组上的无效索引将引发异常,但它是NSRangeException,而不是"无法识别的选择器".但请注意,如果您试图"索引"NSString,NSView或其他非数组/字典对象,则会得到"无法识别的选择器" - 这是一般错误,意味着指定的类不支持指定的方法. (2认同)