1.概述
先直接说原因吧 :
出现这个崩溃的原因是UITableView在加载数据的时候, cell里面的单元格数据为空. 所以出现这个报错的话, 你应该去确认一下数据源是否有值, 或者数据是不是不对的.
好了, 下面说我自己的项目里的这个错误.
最近项目崩溃了, 打印出来的错误信息如标题所示, 平时都没有这个崩溃, 打了全局断点, 停留在这个地方
因为之前一直没有这个崩溃, 一时间我也是有点懵逼, 但撞上了就要解决.
2. 原因的寻找
出现崩溃我们可能首先想到的就是打全局断点, 我也是这么做的, 看到如上图所示的地方, 第一反应肯定就是想是不是页面的布局约束有错误......确认这个思路的过程省略一百万字......总之最后确认不是这个错误;
蓝后, 继续找啊, 继续找的时候就是从viewdidload方法里开始一个一个的打断点, 最后发现在获取本地数据的时候返回来的数据是不对的!!!!!
为了更好的说明导致错误的过程, 我先说一下项目里这个页面的数据加载过程:
viewdidload-->加载本地数据然后设置界面--->加载网络数据然后刷新界面并且将本次数据保存到本地
通过一个个的打断点发现, 加载本地数据的时候返回来的是这个
{"status":{"Code":"14","Msg":"登录过期,请重新登录"}}
看到这里恍然大悟, 原来将上一次返回来的登录过期的数据也保存起来了, 这样的数据肯定是不能用来设置界面的, 所以导致了开篇所说的结果.
3. 问题的解决
找到原因之后就很简单了, 将不正确信息的json不保存包本地就好了. 经过修改之后, 果然如此