插入数组越界问题的探索

今天编写程序运行时,遇到一个问题

 *** 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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值