当前位置 : 主页 > 手机开发 > ios >

ios – 如何在Objective-C中检查有效对象?

来源:互联网 收集:自由互联 发布时间:2021-06-11
我继承了从Web服务解析并填写NSDictionary的代码.在我将要探索的某些情况下,解析器返回一个计数为5的NSDictionary,但对象无效.发送给它们的任何消息都会因无法识别的选择器而失败,甚至
我继承了从Web服务解析并填写NSDictionary的代码.在我将要探索的某些情况下,解析器返回一个计数为5的NSDictionary,但对象无效.发送给它们的任何消息都会因无法识别的选择器而失败,甚至isKindOfClass:也会失败.

当我在控制台中对象时,我看到了这个:

error: Execution was interrupted, reason: Attempted to dereference an invalid
ObjC Object or send it an unrecognized selector.
The process has been returned to the state before expression evaluation.

如果isKindOfClass:在这里不起作用,我如何检查对象是否无效?

这是崩溃期间控制台的输出.你看到有5个空对象的字典,对象9上的po返回无效消息.

这是大词典的po:

我希望我能够在解析器中检查问题,但我也对如何检查该无效对象以防止崩溃感兴趣.

问题是您尝试使用整数访问字典元素,如果对象是字典,则键应该是符合复制协议的任何obj-c对象.您使用0作为整数索引,原始类型不是obj-c对象,您应该将其包装为NSNumber. 另一个问题是NSJSONSerializer返回一个id类型对象,基于解析的JSON的结构,这可能是一个字典或一个数组,你应该总是检查返回的对象来检查类型.我通常总是期望一个字典数组,如果系统只返回一个字典,我只需要那个对象即可创建一个数组.
网友评论