iOS *** Assertion failure in -[MASLayoutConstraint _setSymbolicConstant:constant:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/Foundation/Foundation-1290/Layout.subproj/NSLayoutConstraint.m:657 错误

1.概述

先直接说原因吧 :
出现这个崩溃的原因是UITableView在加载数据的时候, cell里面的单元格数据为空. 所以出现这个报错的话, 你应该去确认一下数据源是否有值, 或者数据是不是不对的.

好了, 下面说我自己的项目里的这个错误.

最近项目崩溃了, 打印出来的错误信息如标题所示, 平时都没有这个崩溃, 打了全局断点, 停留在这个地方

image.png

因为之前一直没有这个崩溃, 一时间我也是有点懵逼, 但撞上了就要解决.

2. 原因的寻找

出现崩溃我们可能首先想到的就是打全局断点, 我也是这么做的, 看到如上图所示的地方, 第一反应肯定就是想是不是页面的布局约束有错误......确认这个思路的过程省略一百万字......总之最后确认不是这个错误;

蓝后, 继续找啊, 继续找的时候就是从viewdidload方法里开始一个一个的打断点, 最后发现在获取本地数据的时候返回来的数据是不对的!!!!!
为了更好的说明导致错误的过程, 我先说一下项目里这个页面的数据加载过程:

viewdidload-->加载本地数据然后设置界面--->加载网络数据然后刷新界面并且将本次数据保存到本地

通过一个个的打断点发现, 加载本地数据的时候返回来的是这个

{"status":{"Code":"14","Msg":"登录过期,请重新登录"}}

看到这里恍然大悟, 原来将上一次返回来的登录过期的数据也保存起来了, 这样的数据肯定是不能用来设置界面的, 所以导致了开篇所说的结果.

3. 问题的解决

找到原因之后就很简单了, 将不正确信息的json不保存包本地就好了. 经过修改之后, 果然如此

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,791评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,747评论 19 139
  • 喜欢一个人,是1万次心跳呼吸,也是一万次低头叹息; 喜欢一个人,既有了软肋也有了铠甲,喜欢一个人,会因为他的一句话...
    不倾城阅读 3,741评论 2 4
  • 作业一:每日晨间朋友圈见证(必须在12点之前完成) 作业二:每天朋友圈心得(当天晚上12点之前完成) 作业三:每天...
    艾灸养生娟娟阅读 891评论 0 0
  • -1- 其实我怕你总夸奖高估我坚忍 其实更怕你只懂得欣赏我品行 无人及我用字绝重拾了你信心 无人问我可甘心演这伟大...
    孟奕迅阅读 6,846评论 0 1