美文网首页
YYModel 配合 AFN 使用

YYModel 配合 AFN 使用

作者: 大佬papp | 来源:发表于2018-12-29 16:37 被阅读0次

    在网上看很多关于 YYModel 的文章.坑大的不是一点.在这里就不吐槽了,没有一个是自己写的,看10篇能有7篇一样的.一样的也就算了,关键是什么用都没有,就知道了个基本用法,忍不了,自己开写.

    ----------------------<---------------->--------------

    先说说 YYmodel 官方文档

    ![# 在网上看很多关于 YYModel 的文章.坑大的不是一点.在这里就不吐槽了,没有一个是自己写的,看10篇能有7篇一样的.一样的也就算了,关键是什么用都没有,就知道了个基本用法,忍不了,自己开写.

    ----------------------<---------------->--------------

    先说说 YYmodel 官方文档

    image

    从上面数据显示,Mantle非常高,所以我们先谈一下 Mantle 是用来干什么的.

    Mantle 的诞生是为了更方便的将服务端返回的数据映射为我们的 Model。

    简单来说,我们在写 app 的时候,经常需要把服务端返回的数据和我们自己创建 model 关联起来,这样,在和 View 层交互的时候就可以使用 model 而不是直接使用字典。

    我们也可以理解为,为什么咱们用 AFN 要配合 Model 来进行数据的解析,不就是为了方便咱们把数据展示出来吗? 所以 Mantle 就是用来做这个的.

    开始上硬货吧! 我先给大家放一段Jason 的网络数据,方便大家观看

    image

    可以看出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

    image

    可以看到,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;
    
    image

    希望刚刚入 OC 的小白可以看懂,不懂的评论告诉我就好
    ](https://img.haomeiwen.com/i15199510/60d25c6f0629e71e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    相关文章

      网友评论

          本文标题:YYModel 配合 AFN 使用

          本文链接:https://www.haomeiwen.com/subject/szlplqtx.html