新手自学ios 之 利用YYModel封装网络请求返回model
来源:互联网 发布:淘宝买太多了会怎么样 编辑:程序博客网 时间:2024/05/21 19:37
很多时候,我们在做项目的时候,服务端返回给我们的数据类型(json),很多格式如下,我们如果每个model 中都去写 total,resultCode 什么的,又很麻烦。
{ data: [ { name: "张三", icon: "http://~~~~~hahaha.png", age: 18, sex: "男", address: "天安门广场", } ], resultMessage: "查询成功", resultCode: "0", total: 1}
如上,可以看出,data 对应一个NSArray ,其中一个{} 包含的是一个 model ,加入是一个User 类。
现在记录我的解决方法
一、定义基类 CommonResponse,如下
@interface WSCommonResponse : NSObject/** * 判断是否成功,0是成功 */@property(nonatomic,assign) int ret;/** * 描述信息 */@property(nonatomic,copy) NSString *desc;/** * 数据源 */@property(nonatomic,strong) NSArray *data;/** * 数据量 */@property(nonatomic,assign) int total;/** * 判断请求是否成功 */- (BOOL) isSuccess;/** * 判断是否有数据源 */- (BOOL) hasData;@end
二、这时候,我们新建继承自CommonResponse一个实体类,假如是个 TestResult类 , 这个类有来自于父类的几个属性,其中有个data 属性是NSArray 类型,如果让 YYModel 知道 NSArray 装的是 User 类呢?
#import "WSCommonResponse.h"@interface WSTestResult : WSCommonResponse+ (NSDictionary *)modelContainerPropertyGenericClass;@end@interface WSUser : NSObject@property(nonatomic,assign) int age;@property(nonatomic,copy) NSString *name;@property(nonatomic,copy) NSString *sex;@property(nonatomic,copy) NSString *icon;@property(nonatomic,copy) NSString *phone;@property(nonatomic,copy) NSString *address;@end
上面 用到一个方法,是通过反射把 User 类转 父类中NSArray 的具体类的作用
+ (NSDictionary *)modelContainerPropertyGenericClass { return @{@"data" : [WSUser class]};}
<pre name="code" class="objc">WSTestResult *result = [WSTestResult yy_modelWithJSON:responseObject]; if (result.isSuccess) { //请求成功 if(result.hasData){ //有数据 //do something u want ... //取出数据 WSUser *user = result.data[0]; } else { //没有数据 [self showInfo:result.desc]; } } else { //接口畅通,但是请求失败了(非网络等其他原因) [self showError:result.desc]; }
其中 responseObject 是AFNetworking 调用成功的时候返回的 json,
这样我们就完成了 服务端返回json 的封装
0 0
- 新手自学ios 之 利用YYModel封装网络请求返回model
- iOS之网络请求的简单封装
- iOS封装网络请求
- iOS 封装一个Model 处理返回时间
- iOS网络请求简单封装
- iOS 封装网络请求任务
- IOS 网络请求框架封装
- iOS 网络请求类封装
- iOS 原生网络请求封装
- iOS开发之网络请求(基于AFNetworking的再封装)
- iOS开发之网络请求(基于AFNetworking的再封装)
- 封装网络请求 - iOS网络篇
- iOS 网络请求 与 网络封装
- 利用block封装网络请求类
- Swift-利用AFN封装网络请求
- iOS:YYModel
- iOS之利用GCD信号量控制并发网络请求
- iOS之利用GCD信号量控制并发网络请求
- linux中export的作用和source命令
- Jquery中ajax方法data参数的用法
- UIL doesn't support scheme(protocol) by default You should implement this support yourself
- 2.4函数句柄
- 探询策略模式
- 新手自学ios 之 利用YYModel封装网络请求返回model
- 线程和进程
- oracle 同步数据库表数据
- openfalcon - agent - fastdfs
- using Regular Expressions to Look References in Source Insight
- Java连接Oracle数据库的简单示例
- 解决低版本的xcode不能打开xcode8.0
- 视频播放器的屏幕手势适配
- Kotlin——环境搭建