YYModel 配合 AFN 使用.
在网上看很多关于 YYModel 的文章.坑大的不是一点.在这里就不吐槽了,没有一个是自己写的,看10篇能有7篇一样的.一样的也就算了,关键是什么用都没有,就知道了个基本用法,忍不了,自己开写.
----------------------<---------------->--------------
先说说 YYmodel 官方文档
![](https://img.haomeiwen.com/i15199510/60d25c6f0629e71e.png)
从上面数据显示,Mantle非常高,所以我们先谈一下 Mantle 是用来干什么的.
Mantle 的诞生是为了更方便的将服务端返回的数据映射为我们的 Model。
简单来说,我们在写 app 的时候,经常需要把服务端返回的数据和我们自己创建 model 关联起来,这样,在和 View 层交互的时候就可以使用 model 而不是直接使用字典。
我们也可以理解为,为什么咱们用 AFN 要配合 Model 来进行数据的解析,不就是为了方便咱们把数据展示出来吗? 所以 Mantle 就是用来做这个的.
开始上硬货吧! 我先给大家放一段Jason 的网络数据,方便大家观看
![](https://img.haomeiwen.com/i15199510/7f58ae10bc50b3e4.png)
可以看出data 是一个字典,那么我们就定一个 Model 来写
@interface JokeModel : NSObject
@property(nonatomic, strong) DataModel *data;
先创 Model 文件,里面定义属性.如果只要 data 数据下的一个字符串
@interface DataModel:NSObject
@property(nonatomic, copy) NSString *recAlbumsPanelTitle;
@end
@interface JokeModel : NSObject
@property(nonatomic, strong) DataModel *data;
@end
在上面声明 DataModel 同时创建一个字符串的属性就 OK 了,如果你要取 tracks 里面的数据
@interface DataModel:NSObject
@property(nonatomic, copy) NSString *recAlbumsPanelTitle;
@property(nonatomic, strong) TracksData *tracks;
@end
@interface JokeModel : NSObject
@property(nonatomic, strong) DataModel *data;
@end
再定一个 model
![](https://img.haomeiwen.com/i15199510/0bf20b0bbe25d992.png)
可以看到,tracks 下面有个 list 数组,数组再包字典,很常见的 json 数据,举例:要取 list 里面 coverLarge
@interface ImgData:NSObject
@property (nonatomic,copy)NSString *coverLarge;
@end
@interfaceTracksData:NSObject
@property (nonatomic,copy)NSArray *list;
@end
@interfaceDataModel:NSObject
@property(nonatomic,copy)NSString*recAlbumsPanelTitle;
@property(nonatomic, strong) TracksData *tracks;
@end
@interfaceJokeModel :NSObject
@property(nonatomic, strong) DataModel *data;
@end
同时在.m 中
#import "JokeModel.h"
@implementation TracksData
// 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
+ (NSDictionary*)modelContainerPropertyGenericClass {
return@{@"list": [ImgData class]};
}
@end
@implementation ImgData
@end
@implementation DataModel
@end
@implementation JokeModel
@end
这个 Model 就写好了,开始解析.
self.model= [JokeModel yy_modelWithJSON:responseObject];
就可以开始展示内容了,一个 NSArray 就搞定内容,看个人习惯了
self.dataSource =self.model.data.tracks.list;
![](https://img.haomeiwen.com/i15199510/3de592a2f3a66f92.png)
希望刚刚入 OC 的小白可以看懂,不懂的评论告诉我就好