数据转模型

这篇博客探讨了在iOS开发中如何将数据转换为模型,重点比较了MJExtension、YYModel和JSONModel的使用。MJExtension通过`mj_objectWithKeyValues:`方法实现字典到模型的转换,而YYModel则提供了`modelWithJSON:`方法。文章还提到了如何处理关键字不同的属性、嵌套模型和模型数组的情况。对于JSONModel,强调了其Optional和Ignore特性,以及处理嵌套模型和多级映射的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在开发过程中用到的最多的就是数据转模型了,有时候简单点的都是面向字典开发,如果数据字段非常复杂层级结构多的话这个时候写起来就有点麻烦了,那么MJExtension,JSONModel,YYModel,Mantle就派上用场了,或者自定义的话好像也可以的不过,这个时候就看你项目数据结构了,如果真的复杂而且独特的话,联系一下runtime也是不错的,反正我不会~~~

     言归正传:我先前一直使用的是JSONModel,来了现在这家公司接手别人源码的时候才知道项目用的是MJExtension,其中也了解过YYModel、Mantle,这两个没有怎么在项目中用到,但是原理都是差不多的,只了解项目中怎么用,不研究内部Runtime!。

先从MJExtension说:

1.

//字典转模型,使用的是mj_objectWithKeyValues:方法
User *user = [User mj_objectWithKeyValues:dict];

2.

// JSON字符串转模型
User *user = [User mj_objectWithKeyValues:jsonString]

3.

//字典转模型,模型里面含有模型
Status *status = [Status mj_objectWithKeyValues:dict];

4.模型的数组里面有模型

只需要在模型的.m文件里面实现这个方法就行了;

;

5.数据中有关键字id desciption等字段:

实现下面方法:



YYModel的用法:

1.// 将 JSON (NSData,NSString,NSDictionary) 转换为 Model:

    ZHZYYModel *model = [ZHZYYModel modelWithJSON:_dic];

2.属性字段关键字的时候或者不一样的时候:

实现下面的方法:


3.如果模型数据有模型的话不需要怎么特殊处理,如果子模型中有关键字的话或者字段不一样的话同理2实现上面的方法 就行!

4.模型数组有模型的话:在模型.m文件中实现

+ (NSDictionary *)modelContainerPropertyGenericClass {
    /*
     以 Class 或 Class Name 的形式
     */
    return @{@"shadows" : [Shadow class],
             @"borders" : Border.class,
             @"attachments" : @"Attachment" };
}

5.YYModel自动校验:


6.白名单 黑名单:就是自动忽略某些属性



JSONModel的使用:记住一点就是创建模型的时候一定要集成自JSONModel


上述两个有两个特性 一个是Optional这个可以允许数据返回为NULL切不会报错,Ignore是忽略这个属性,数据返回字段可以没有 有的话直接赋值!

2.如果所有属性都是可选的 实现这个方法:

+(BOOL)propertyIsOptional:(NSString*)propertyName
{
    return YES;
}

3.模型属性有模型嵌套的话 方法: modelWithJSON

4. 模型属性数组包含模型的话只需要遵守以下模型协议就行:


5.多级映射:实现这个方法。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值