您的位置:首页 > 其它

插入数组越界问题的探索

2015-12-29 00:28 239 查看
今天编写程序运行时,遇到一个问题

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[1]'

提示数组越界。

我主要目的想实现将model模型里的数据存到数组里指定位置,然后在tableviewCell遍历时获取对应的数组元素。

_dataArray[indexPath.section][indexPath.row]

所以我在tableview生成之前先 写好数组

_dataArray =
@[@[_model.userName,_model.sex,_model.birthday,_model.idNo,_model.mobile],

@[_model.orgName,_model.address,_model.contactTel]];
程序运行在此报错数组越界。

经查询,原因是数组元素_model.address字段内容是nil. 而 nil 被用来作为集合结束的标志符,不能存储在集合里
正确做法是 接口数据字典转模型时,通过NSJSONSerialization,若有nil会自动转化成NSNull类型。NSNull对象是可以存入集合里的。

参考1: http://blog.sina.com.cn/s/blog_4b14751d0100gfvq.html 参考2:nil/Nil/NULL/NSNull http://www.cocoachina.com/industry/20140409/8128.html
参考3:

服务器返回的json里面结果如果返回有空值,NSJSONSerialization 会自动把他们换成 NSNull。当我们再去用dict[@“hello”]的时候,就会出触发exception,导致程序崩溃。这就需要判断返回的这个类是不是NSNull类,以下链接做法是定义NSNull的类目来判断。
http://www.cocoachina.com/industry/20140424/8225.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: