反序列化坑

原创
2015/12/09 23:31
阅读数 50

反序列化数据格式的问题 切记不要私自修改原框架的东西 当升级的时候 你是保留还是删除 

self.acceptableContentTypes = [NSSetsetWithObjects:@"application/json", @"text/json", @"text/javascript”,     @"text/plain",nil];


这样在后面加上之后会会是不明智的做法,你可以去gitHub上建一个分支,然后提交给原作者,等待审核,要是通过你就为框架做出了贡献 


一般我们就直接用代码加就可以了 


 tools.responseSerializer.acceptableContentTypes?.insert("text/plain")


写简历的时候你可以写为某个框架做出贡献 比如 位AFNetworking增加反序列化类型,节省了代码的添加 text/html


数据格式匹配bug提示1 添加text/plain类型


Optional(Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain"



加载网络请求bug 403禁止访问 你的主管理账号没有添加关联测试账号   



Optional(Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: forbidden (403)" 



加载网络请求bug3  属性命名错误 


Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)"




测试接口文档数据类型


坑1 不是所有的接口文档都正确 需要你的判断和验证  这个bug是属性类型不匹配


2015-12-08 14:49:13.792 微博01[6097:154105] -[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000001fcc73

2015-12-08 14:49:13.805 微博01[6097:154105] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000001fcc73'



 {
       "access_token": "ACCESS_TOKEN",
       "expires_in": 1234,
       "remind_in":"798114",
       "uid":"12341234"

 }


这个是新浪给我的返回数据样本 很显然 expires_in的数据类型为NSNumber 修改如下

    //基本数据类型要给一个初始值
   

    var expires_in : NSTimeInterval = 0


但是返回字段的说明里面写的全是string以下介绍一种自己判断返回数据类型的方法 就是二进制数据格式返回


展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部