YYModel之模型字段映射以及模型包含

上一篇我们说了YYModel的简单使用NSDictionary转Model.json转model.

这一篇我们说说YYModel的映射以及”包含”.

最简单的json就是下面这种,可以直接调用YYModel的类方法,来完成模型转换:

{
    "name" : "haha",
    "age" : "18"
}

1.后台字段名和模型内字段名不相同的时候的转模型

最快的开发形式是后台接开发完毕之后再开始接.然而我们写的模型的字段和后台的字段不是每次都一样的
拿上面的name举个例子,比如后台的字段是title,我们可以在.m中

///以字典的方式返回.key是咱们写的模型中的属性名,value是我们想要映射的后台给的字段名.
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper {
    return @{
        @"name" : @"title",
    };
}
/// 如果想要模型通用.比如后台返回的有时候叫Title.有时候叫Text.其实都是一个东西那么我们可以.value用数组包含NSString的方式做映射
+ (nullable NSDictionary<NSString *, id> *)modelCustomPropertyMapper {
    return @{
        @"name" : @[@"title" ,@"Text"],
    };
}

2.当json数据是对象包含对象形式的字典转模型.

一般的网络数据都是json里面不单单是字典(对于json来说应该是叫”对象”).
也有可能是数组或者是对象套对象的形式类似于:

{
    "title" : "Title1"
    "movie" : {
        "name" : "movieName",
        "contentUrl" : "http://www.xxx.com",
    }
}

那么我们可以使用

/// 加入movie对应的是一个MovieModel的模型类
+ (nullable NSDictionary<NSString *, id> *)modelContainerPropertyGenericClass {
    return @{
        @"movie" : [MovieModel class],
    };
}
// 对于这个[MovieModel class]
//  return @{
//      @"movie" : [MovieModel class],
//  };
//有三种使用方式
//1.@"movie" : [MovieModel class]
//2.@"movie" : MovieModel.class
//3.@"movie" : "MovieModel"

对于三种”模型包含模型”的类方法里头.我觉得最好还是上头两种.第三种的话类似于NSClassFromString.动态获取类的方式并不安全.有可能无法正常转换.

猜你喜欢

转载自blog.csdn.net/qq_18683985/article/details/81436977
今日推荐