美文网首页
字典和模型转换的问题

字典和模型转换的问题

作者: AroundWind | 来源:发表于2017-11-14 22:09 被阅读0次

iOS 常用的字典转模型框架:MJExtension
在常见的开发中会碰到一些问题。

常见的情况有:

  1. 模型嵌套模型数组;
  2. 属性名冲突,比如服务器返回 id、description;
  3. 同一个属性名可能会对应多个服务器返回的 key;
  4. 模型嵌套模型时,内模型的属性过少;
  5. 模型属性和服务器 key 命名格式不同。

解决方案

  • 指定属性名和类名的转换
+ (NSDictionary *)mj_objectClassInArray
// key : 属性名
// value : 类名
  • 指定属性名和字典 key 的映射
+ (NSDictionary *)mj_replacedKeyFromPropertyName
// key : 属性名
/* value: 字典中的 key */
/* 如果value 有多个则用数组存储,从下标 0 开始优先级降序 */
/* 如果内模型的属性就只有一个,
则可以将其映射到本模型中,value 赋值方式同 keypath, 如果内模型中的属性为数组则直接在keypath 中接字面量下标 */
  • 属性名处理
+ (NSString *)mj_replacedKeyFromPropertyName121:(NSString *)propertyName{
  if([propertyName isEqualToString:@"ID"]) return @"id";
  return [propertyName mj_underlineFromCamel];
}
  • 属性名处理 (驼峰 - -> 下划线)
+ (NSString *)mj_replacedKeyFromPropertyName121:(NSString *)propertyName{
   NSMutableString *key = [NSMutableString string];
   for(NSUInteger I = 0;  I < propertyName.length; I++){
      unichar c = [propertyName characterAtIndex: I];
      if(c >= 'A' && c <= 'Z'){
        [key appendString:@"_"];
        [key appendFormat:@"%c",c+32];
      }else{
        [key appendFormat:@"%c",c];
      }
  }
  return key;
}
  • 如果要做到无污染模型
[User mj_setupReplacedKeyFromPropertyName:^NSDictionary *(
  return @{key : value};
)];

[User mj_setupObjectClassInArray:^NSDictionary *(
  return @{key : value};
)];
  • 当多个模型有同一个属性且需要转换时,处理方法有:
  1. 每一个模型依次配;
  2. 将同一个属性抽到父类;
  3. 直接配一个到根类,子类找不到会找向父类。

相关文章

  • 字典和模型转换的问题

    iOS 常用的字典转模型框架:MJExtension在常见的开发中会碰到一些问题。 常见的情况有: 模型嵌套模型数...

  • MJExtension字典转模型

    用MJExtension字典(字典OK)转模型,获得的模型,始终有问题,一直怀疑是MJExtension转换有问题...

  • MJExtension简单介绍及使用

    MJExtension是一套字典和模型之间互相转换的超轻量级框架 1、字典(JSON) --> 模型(Model)...

  • Model--MJExtension

    参考文档 MJExtension是一套字典和模型之间互相转换的超轻量级框架字典(JSON) --> 模型(Mode...

  • MJExtension<转>

    世界上转换速度最快、使用最简单方便的字典转模型框架 能做什么? MJExtension是一套字典和模型之间互相转换...

  • iOS 使用Runtime机制将模型(对象)和字典相互转换

    在我们常见开发中往往需要将模型(对象)和字典相互转换,字典转模型(对象)相对简单,可以用系统方法快速实现,而模型(...

  • 字典和模型的自动转换

    NSDictionary *dict2 = @{@"name":@"Lxxe"@"student": @{@"ic...

  • Runtime字典转模型

    用一个分类实现字典转模型,分类头文件如下: 如果模型的属性有字典数组,想要将该字典数组转换成模型数组,那么在该模型...

  • iOS MJExtension详解

    在项目中模型是必不可少的, 那么字典转换模型就显得格外重要. 字典转模型我使用的是MJExtension, 想必大...

  • iOS MJExtension 详解

    在项目中模型是必不可少的, 那么字典转换模型就显得格外重要. 字典转模型我使用的是MJExtension, 想必大...

网友评论

      本文标题:字典和模型转换的问题

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