当前位置: 移动技术网 > 移动技术>移动开发>IOS > iOS reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x60800

iOS reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x60800

2018年10月12日  | 移动技术网移动技术  | 我要评论

ios reason: '-[__nsarraym objectforkeyedsubscript:]: unrecognized selector sent to instance 0x60800。

一、源代码

nsdictionary * dic = [nsjsonserialization jsonobjectwithdata:responseobject options:nsjsonreadingmutablecontainers error:nil];

nslog(@"dic === %@",dic);

打印结果:dic === {
len = 69;
list = (
{

//是字段数据

}

for (nsdictionary * subdic in dic[@"list"]) {

nslog(@“遍历数据”);

}

如果后台数据格式修改不是dic[@"list”]),就是崩溃报错如下:

reason: '-[__nsarraym objectforkeyedsubscript:]: unrecognized selector sent to instance 0x60800025e840'

二、解决方案

 

解决方法一:

nsmutablearray *toplevelarray = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers error:nil];

nsdictionary *dict = toplevelarray[0];

for (nsdictionary * subdic in dict) {

nslog(@“遍历数据”);

}

解决方法二:

如果您想要检查你的什么,你可以使用 iskindofclass:像这样:

id jso = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers error:nil];

if (jso == nil) {

// error. you should probably have passed an nserror ** as the error

// argument so you could log it.

} else if ([jso iskindofclass:[nsarray class]]) {

nsarray *array = jso;

// process array elements

} else if ([jso iskindofclass:[nsdictionary class]]) {

nsdictionary *dict = jso;

// process dictionary elements

} else {

// shouldn't happen unless you use the nsjsonreadingallowfragments flag.

}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网