Mantle迅速上手

原创 2016年05月31日 19:37:17

首先,不要害怕,他是帮助我们简化问题的(比如自动降NSNull转成nil,减少崩溃的可能),所以并不会难用。
我们通常用的就是MTLJSONAdapter,MTLModel
tip 1:继承MTLModel,遵守MTLJSONSerializing协议
你需要实现这个方法来写明一下映射关系,这个是我觉得Mantle不好的一点,如果属性和传过来的接口是一样的名字,也必须要在这个方法里一一对应,不太好,MJExtension就不需要。

+ (NSDictionary *)JSONKeyPathsByPropertyKey

用的时候
data转字典

[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

字典转模型

Model *model = [MTLJSONAdapter modelOfClass:[Model class] fromJSONDictionary:dict error:nil];

如果你的模型里面想要的是NSDate, 但是传过来的是NSNumber的话,你可以实现这个方法来转换一下。

+ (NSValueTransformer *)dateJSONTransformer { // 这里要注意哦,你要在方法名前面加上你要修改的属性名哦
    return [MTLValueTransformer reversibleTransformerWithForwardBlock:^(NSNumber *dateNum) {
        return [NSDate dateWithTimeIntervalSince1970:dateNum.floatValue];
    } reverseBlock:^(NSDate *date) {
        return [NSString stringWithFormat:@"%f",[date timeIntervalSince1970]];
    }];
}

这里面reverseBlock是用来模型转json的

也就是这个方法

+ (NSDictionary *)JSONDictionaryFromModel:

当你的模型里有的属性是数组的话,你就需要告诉他一下,这个数组里面放的是什么模型,也就是实现这个方法

+ (NSValueTransformer *)recommendListJSONTransformer { // 这里的命名方式同上
    return [MTLJSONAdapter arrayTransformerWithModelClass:[XXXModel class]];
}

如果你的模型里的一个属性是另一个Model的话,那么你就需要实现这个方法

+ (NSValueTransformer *)companyInfoJSONTransformer { // 这里的命名方式同上
    return [MTLJSONAdapter dictionaryTransformerWithModelClass:[XXXModel class]];
}

当你想把模型存储起来的时候你可以酱紫操作。
归档操作

[NSKeyedArchiver archiveRootObject:model toFile:path];

解档操作

TestDataModel *unachiveModel = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

参考文章:http://blog.csdn.net/majiakun1/article/details/45829561

版权声明:本文为博主原创文章,未经博主允许不得转载。

总结学习51系列,stm32系列单片机的过往

作为电子专业的学生,再加上自己对电子方面有着较浓厚的热情。便开始一段51单片机的学习之旅。51单片机是一种十分简单基础的单片机。学习起来门槛不高,只要稍微有点C语言的基础就可以比较容易的上手。实践与理...
  • qq_33475105
  • qq_33475105
  • 2016年09月30日 21:34
  • 318

Mantle使用(摘自GitHub)

Mantle Mantle可以容易的编写一个简单的Cocoa和Cocoa touch应用程序的模型层。 典型的模型对象 通常我们用Objective-C写的模型层遇到了什么问题? 我们...
  • muzhenhua
  • muzhenhua
  • 2016年05月13日 11:30
  • 1142

Mantle JSONkeyPath辅助插件

#Mantle在使用时需要插入json键值对的映射,大部分情况下与属性的名称是一样的,因此做了这个插件完成这一步骤.安装下载项目后直接运行,然后重启xcode即可,支持xcode6.1+使用步骤1.将...
  • taishanduba
  • taishanduba
  • 2015年10月07日 08:58
  • 530

Mantle 初步使用

最近接触到了Mantle这个东西,感觉很不错,在此与各位分享一下。 前言 在开发的过程中,我们常常会从网络获取数据,而数据通常又为JSON格式。 这时比较常见的做法是把JSON数据转为Mo...
  • afdl9999
  • afdl9999
  • 2015年05月11日 01:40
  • 5895

Mantle 快速使用上手

Mantle 帮助我们简化了 Cocoa & Cocoa Touch 的 `Model` 层。这篇文章讲Mantle的简单上手快速集成。...
  • AugustO360
  • AugustO360
  • 2015年12月01日 16:41
  • 292

ios Mantle使用小记

先从Mantle github上下载下最新代码, (最近发现这个Mantle升级变化也挺大的,或许过一段时间, 这个文章记录的方法也不适用了) 1. 测试时, 可以使用下面这个网址及代码来测试, 里面...
  • smking
  • smking
  • 2015年08月20日 11:28
  • 16027

iOS开源库源码解析之Mantle

来自Leo的原创博客,转载请著名出处我的StackOverflow这个源码解析系列的文章 AsnycDispalyKit SDWebImage Mantle(本文) AFNetworking(3.0)...
  • Hello_Hwc
  • Hello_Hwc
  • 2016年06月01日 00:04
  • 6622

mantle的Array与dictionary

json格式: NSDictionary *dict = @{                            @"name": @"Bob",            ...
  • sjcode
  • sjcode
  • 2015年09月02日 18:27
  • 622

Mantle的优缺点

简要分析   先来简要分析一下各种构建model层方法的优点和缺点:   一、工具生成model   优点:   1、简单易用,新手也可以10秒上手 ...
  • leikezhu1981
  • leikezhu1981
  • 2016年04月20日 23:46
  • 741

Mantle与Direct3D游戏效能大比拼

曾经有两个图形运算API在PC游戏领域争得火热,一个是Direct3D,另一个是OpenGL。Direct3D晚于OpenGL登场,却可以后发制人成为今天在PC游戏领域上的霸主;OpenGL曾经对Di...
  • pizi0475
  • pizi0475
  • 2015年03月04日 15:16
  • 810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mantle迅速上手
举报原因:
原因补充:

(最多只允许输入30个字)