Mantle的使用

Mantle是基于KVO实现的,必须是属性才可以,普通的成员变量是无法使用Mantle的。

Model类需要集成MTLModel,同时需要实现MTLJSONSerializing,告诉Mantle如何根据我们的规则把JSON格式转换成Model Object。

+(NsDictionary *)JSONKeyPathByPropertyKey

方法指明了如何把JSON的keypath和mode object的key对应起来。

+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key

方法用来对数据进行转换,但是会有大量if-else if-else。
例子:

+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key
{
     if([key isEqualToString:@"xxx"]){
          return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
               //将number转换成要得到的格式返回
               return xxx;
          } reverseBlock:^id(NSString *str){
               //将str转换成要得到的格式返回
               return xxx;
          }
      }
      return nil;
}

可以用
+ (NSValueTransformer *)<key>JSONTransformer
方法来实现转换model。
例子:

+(NSValueTransformer *)XXXJSONTransformer
{
     return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
                  //将number转换成要得到的格式返回
                  return xxx;
             } reverseBlock:^id(NSString *str){
                  //将str转换成要得到的格式返回
                  return xxx;
             }
}

转化model:

xxxx *xxx = [MTLJSONAdapter modelOfClass:[xxxx class] fromJSONDictionary:json error:nil];

转化json:

NSDictionary *json = [MTLJSONAdapter JSONDictionaryFromModel:xxx];
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,824评论 0 9
  • 概述 ​ iOS源码解析—YYModel(YYClassInfo)分析了如何根据OC的Class对象构建...
    egoCogito_panf阅读 11,688评论 4 32
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,049评论 19 139
  • 终于把前面的base文件夹简简单单的看了一遍,终于可以回到正片上来了,保证不烂尾。 项目天天用yymodel解析数...
    充满活力的早晨阅读 1,405评论 1 0
  • 卷八,秦纪三。时间公元前208年至公元前207年。主要故事有项梁立楚、李斯之死、指鹿为马、破釜沉舟等。 1、陈胜的...
    贾海昕阅读 235评论 0 0