溪石iOS是原创文章,非授权请勿转载,但是欢迎评论与学习!

现实中的网络API

json 已经成为现代网络 api 的标准数据格式,比如国家气象局的查询接口:

json 的格式一般为:

  • 对象(object):一个对象以{开始,并以}结束

  • 称/值(collection):名称和值之间使用隔开,一般的形式是:

    {name:value}

现实中的iOS网络请求

因为 iOS 提供的原生框架—— NSURLSession ——提供的方法要求很多底层参数,使用不直观,错误处理也不稳定,实际开发中我们都会选择网络框架,AFNetworking 是目前这方面的首选。它不单封装了 NSURLSession 的请求,还会自动分配请求队列,并格式化返回值,把 json 字符串转成 字典。总之就是省时省力。

还有空气般无处不在的对象

iOS开发中,任何数据都是基于OC对象,那么,问题来了:请求到的 json 数据怎么转成可使用的对象呢?

一种实践是,自己定义一套APP端要用的对象,再逐个实现从字典转换的方法,每个请求都要自己实现一套,这个编码过程麻烦(且重复)不说,接口数量一多,还容易混乱。

现实中我们依然借助一些优秀框架,帮助我们做这些转换,这里我们选择YYModel,它是YYKit中的一个子项目,可以单独使用。

首先需要定义对象:

属性名与 json 字段保持一致,这样才能正确转换。

接着,用 AFNetworking 请求网络接口:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

关键是WeatherInfo *weather = [WeatherInfo yy_modelWithDictionary:responseObject[@"weatherinfo"]];,直接将 json(这里是字典)转成了 WeatherInfo 对象。

有些时候网络返回的字段名不符合 OC 代码规范,YYModel 也很贴心的提供了解决方案:


通过实现 modelCustomPropertyMapper 方法,我们可以手动指定转换后的属性名称。

这样,现实开发中的大部分网络请求都可以自动完成了,最后,通过 ModelMaker 工具,可以自动将 json 转换成对象声明:

ModelMaker

下载地址:

请留言获取~~~

解压密码:xishiios

1.《afnetworking如何使用》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《afnetworking如何使用》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/3248214.html