利用plist文件查看后台返回数据的数据类型

当看客看到标题的时候或许会有些疑惑,有的人甚至会鄙视写者。查看后台返回的数据类型为什么要用plist文件,这也太麻烦了吧。我既然写这篇博客,肯定是有一定的原因的,它也必然有一定的价值。接下来让写者慢慢道来(实际内容也不多)。

要想看后台返回的数据类型,一般后台在给我们接口的时候都会在接口文档中标明返回的数据的数据类型(这在接口定义中我们一般都会和后台进行商量以及最后的确定)。如果有些接口后台没有或忘记在接口文档中给出返回的数据以及数据类型我们还可以利用网上的一些解析工具将接口中的数据进行解析如:http://json.cn这个在线解析工具。如果只是以上两种情况,我也就不会写这篇博客了,我之所以要写这篇博客是因为我遇到了第三种情况:接口中的数据类型改了,并且后台没有和我们说。这第三种情况就让人很是无奈,甚至气愤。

简说本人经历:本人之前的程序是可以正常运行的,可就隔了一天再次运行程序却发现程序崩溃。程序崩溃这应该所有程序猿比较烦恼的一件事,但这也是家常便饭。在发现这种程序崩溃的时候,我就隐约感到可能是后台那边出了问题(因为之前这种情况出现多次,后台改了接口)。可首先还是得先查bug ,看问题到底出在哪里。我首先看后台返回的数据,发现数据和之前的一样,并没有发生像之前的缺数据或多数据的问题。于是打了全局断点(Exception breakPoint),可断点并没有定位到出现问题的位置,而是跑到了main函数中,在控制台打出了[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310’ - andy_she的错误,看来是某个NSNumber类型的数据使用了NSNumber这个类没有的方法。NSNumber?我有的惊讶,我好像没有用过NSNumber类型的数据啊,想了良久,矛头还是指向了后台,难道后台返回了NSNumber类型的数据,可是之前商量都是NS String类型的数据啊,况且之前也使用了,程序没有问题。可为了确定是后台问题再去找后台问问,于是又去查看后台返回的数据。本App是包含用户登录功能的,此接口需要用户登录之后才能有数据,因此如果直接在浏览器中查看此接口返回的数据是没有数据的,需要在控制台打印出后台返回的数据。可在控制台看不出返回的数据到底是NS String类型的还是NSNumber类型的(第三种情况)。我于是将获取到的JSON数据写到一个plist文件中,查看返回的数据的数据类型。方法:[dataDic writeToFile:@"/Users/liangseb/Desktop/plist/1.plist" atomically:YES]; 这样在程序运行完成后就可以打开在桌面上的plist文件查看后台返回的数据的数据类型了。最后发现果然还是后台的问题,后台竟然直接改了数据类型,并且没有通知我。于是去找后台。

实际方法很简单,本篇博客写的东西比较多的是本人的经历过程,看客可以看下我的坎坷经历,我平时写技术性博客废话并不多,可对于这种问题遇到过好多次了,心里真的不爽,写在这里算是发泄一下吧。看客只需看到方法就行了。

经历过这样的bug后,相信再遇到这样的问题,我会很快找到问题所在。所谓的大牛都是经历过无数的bug的,都是在bug中成长起来的。不能打败我的bug只能使我变得更加强大,希望自己变得越来越强。加油!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏余林丰

0.Java并发包系列开篇

  在我们想要谈论Java并发包(java.util.concurrent)的时候,这是一个头疼的问题,却又是每个Java工程师不得不掌握的一项技能。一直以来都...

2185
来自专栏精讲JAVA

怎样编写高质量的Java代码

代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍...

45010
来自专栏运维技术迷

Redis单线程架构

redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。 引出单线程模型 开启三个redis-cli客户端同时执行命令 客户端1设置一个字...

5298
来自专栏java一日一条

怎样编写高质量的Java代码

怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码...

1641
来自专栏程序员互动联盟

【一起学python】hello world

联盟有个小伙伴,为了督促自己学习进步,决定把自己以前学的python重新梳理下,并且以文章的方式展示出来,联盟专门做一起学python系列专栏,鼓励这位小伙伴学...

3508
来自专栏Keegan小钢

App架构经验总结(一)

原文链接:http://keeganlee.me/post/architecture/20160303 版权声明:本文刊载在《程序员》杂志2016年3期,版权归...

2324
来自专栏Spark学习技巧

深入理解Apache Flink核心技术

9443
来自专栏Golang语言社区

golang websocket总结(问题贴)

因为工作的需要,接触了websocket,开始的一些很简单的代码,都不知道该怎样运行起来,所以,总是有一层神秘感,却没有太多的兴趣去研究它。不过,还是免不了要了...

3113
来自专栏平凡文摘

怎样编写高质量的Java代码

1663
来自专栏Java技术分享圈

杨老师课堂_Java教程第一篇之认识计算机

*接下来就是确定、确定、确定就ok! *检验环境变量是否成功在DOS命令行里输入javac或java,如果正常显示一些内容,说明安装成功并且配...

1052

扫码关注云+社区

领取腾讯云代金券