当前位置: 首页 > news >正文

iOS:“Invalid top-level type in JSON write”引起程序闪退

下午交测开发的新功能,给测试演示的时候发现我负责的发帖页面,在没有添加关联商品时发帖程序会闪退。会后我开始调试bug,查找原因,一个全局断点很容易就定位到了引起程序闪退的代码,原来是一个把字典转转换成字符串的方法引起的。

//字典转为Json字符串
+ (NSString *)convertDictionaryToJsonString:(NSDictionary *)dic
{
    NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
复制代码

错误log如下: [NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write

而引起错误的原因是在没有添加关联商品时调用convertDictionaryToJsonString方法时参数传入的是一个空字符串,把字符串当成了一个字典使用,而字符串是无法转换成json格式的,所以代码执行到NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];语句时,引起了应用闪退。

而出现这个bug的原因是后台接口返回数据发生了变化,同事在没有告知我的情况下帮我修改了代码,好吧,啥都不想不说了。。。 来记录一下第一次遇到的这个bug.

相关文章:

  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • 真正的反演笔记
  • 作为面试官的一点点感悟,谈谈技术人的成长之路
  • 阿里程序员工作小技巧:理解CPU分支预测,提高代码效率
  • Ubuntu18.04配置双网卡、双路由
  • 刚刚,阿里发布AI谣言粉碎机,识别准确率达81%
  • 如何通过StackStorm自动支持2万多台服务器
  • 流动的SVG线条
  • Spring框架IOC和AOP的实现原理(概念)
  • 使用GlobalSSH加速Ansible海外部署效率
  • gulp的使用方法
  • npm更新升级
  • 微信自动跳转外部浏览器打开网页或下载APP的技术源码,可以避免分享链接被微信拦截...
  • 微信小程序中使用emoji表情相关说明
  • idou老师教你学istio30:Mixer Redis Quota Adapter 实现和机制
  • hexo+github搭建个人博客
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Apache Spark Streaming 使用实例
  • co.js - 让异步代码同步化
  • github指令
  • Git的一些常用操作
  • Git学习与使用心得(1)—— 初始化
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Java IO学习笔记一
  • jdbc就是这么简单
  • Lucene解析 - 基本概念
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • python大佬养成计划----difflib模块
  • React+TypeScript入门
  • vue.js框架原理浅析
  • Vue全家桶实现一个Web App
  • 从零搭建Koa2 Server
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 聚类分析——Kmeans
  • 用quicker-worker.js轻松跑一个大数据遍历
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (9)目标检测_SSD的原理
  • (三十五)大数据实战——Superset可视化平台搭建
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)编辑寄语:因为爱心,所以美丽
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .Net IE10 _doPostBack 未定义
  • .NET和.COM和.CN域名区别
  • .net生成的类,跨工程调用显示注释
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @AutoConfigurationPackage的使用
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • @vue/cli 3.x+引入jQuery
  • @拔赤:Web前端开发十日谈
  • [ 环境搭建篇 ] 安装 java 环境并配置环境变量(附 JDK1.8 安装包)