美文网首页
YYModel使用小结

YYModel使用小结

作者: 罗显友 | 来源:发表于2018-03-14 17:00 被阅读0次

    YYmodelgitHub地址

    在gitHub上README中有中文说明,以及怎么导入到项目中

    现在介绍一下怎么解析复杂多层的数据
    参照README中的介绍以及结合我自己项目的经验做一个介绍
    1,json数据有一层或者两层多层,但是每一层的嵌套的时候都是字典类型,即为:(不要管这个json格式对不对)

    {   
        “1”:“1”,
        “2”:{
                “3”:“3“,
                ”4“:{
                          ”7“:”7“
                        },
       ”5“:”5“,
       ”6“:”6“
                }
    }
    

    就是这样一层一层的字典形式的,只需要一层一层的把对应的字段写入model中,YYModel会自动转。

    例子:

    
    // JSON:
    {
        "n":"Harry Pottery",
        "p": 256,
        "ext" : {
            "desc" : "A book written by J.K.Rowing."
        },
        "ID" : 100010
    }
    
    // Model:
    @interface Book : NSObject
    @property NSString *name;
    @property NSInteger page;
    @property NSString *desc;
    @property NSString *bookID;
    @end
    @implementation Book
    //返回一个 Dict,将 Model 属性名对映射到 JSON 的 Key。
    + (NSDictionary *)modelCustomPropertyMapper {
        return @{@"name" : @"n",
                 @"page" : @"p",
                 @"desc" : @"ext.desc",
                 @"bookID" : @[@"id",@"ID",@"book_id"]};
    }
    @end
    

    重点是这张图片


    图片.png

    2,json数据中有多层,但是是不同类型,此时就要用到:容器类属性

    @class Shadow, Border, Attachment;
    
    @interface Attributes
    @property NSString *name;
    @property NSArray *shadows; //Array<Shadow>
    @property NSSet *borders; //Set<Border>
    @property NSMutableDictionary *attachments; //Dict<NSString,Attachment>
    @end
    
    @implementation Attributes
    // 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
    + (NSDictionary *)modelContainerPropertyGenericClass {
        return @{@"shadows" : [Shadow class],
                 @"borders" : Border.class,
                 @"attachments" : @"Attachment" };
    }
    @end
    
    将每一层的数据放到一个容器里面,容器的数据类型由返回的json决定。 图片.png
    图片.png
    图片.png
    图片.png

    3,model里面如何嵌套model(满足的要求就是 嵌套的都是字典类型)


    图片.png
    图片.png

    4,YYmodel还有别的功能,都在README中,目前我就用这个解析数据,满足任何坑的后台,能够拿到任何层的数据

    纯字典和字典数组混合,替换关键字,映射类的方法不同

    映射:
    // 返回容器类中的所需要存放的数据类型 (以 Class 或 Class Name 的形式)。
    + (NSDictionary *)modelContainerPropertyGenericClass {
        return @{@"shadows" : [Shadow class],
                 @"borders" : Border.class,
                 @"attachments" : @"Attachment" };
    }
    替换字符:
    + (NSDictionary *)modelCustomPropertyMapper {
        return @{@"name" : @"n",
                 @"page" : @"p",
                 @"desc" : @"ext.desc",
                 @"bookID" : @[@"id",@"ID",@"book_id"]};
    }
    
    
    

    相关文章

      网友评论

          本文标题:YYModel使用小结

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