插入数组越界问题的探索
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
*** 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
相关文章推荐
- Boost笔记--Thread--Ubuntu上初次使用时遇到的问题
- JavaScript高级程序设计:第三章
- JavaScript高级程序设计:第二章
- iso uinavigationcontrollerdemo2
- JavaScript高级程序设计:第一章
- 弱水三千,岂非本源?
- 258. Add Digits
- hibernate框架学习(关联关系)
- java的流和编码
- Codeforces Round #337 (Div. 2) E. Alphabet Permutations (线段树lazy 或 set)
- JVM的垃圾回收
- 基于javaConfig的springDataJpa+dubbo+springMvc搭建(一)
- 自学Python之变量
- spoj 375 QTREE - Query on a tree 树链剖分
- Hibernate学习笔记(二)
- UIimageView和UIimage的小区别
- HTTP协议之chunk编码(分块传输编码
- Apache默认虚拟主机
- 致敬:伤情迷茫的2015
- C#基础--面向对象计算器