[转]oc中Mantle的使用

转载自:胜利哥的江湖 的 Mantle的使用

传统的写法是多么low

做iOS开发的,大概都写过model类。入门的写法大家可以参考Afnetworking的Demo,有一个较经典的例子。 当项目规模变得越来越大后,你会发现,传统的写法成本会很高,维护成本也很高。 用mantle,可以用很小的开发维护成本获得最大的开发效率。用mantle可以很方便的进行模型类和JSON数据之间的转换。

(还有其他理由说服我使用mantle吗?) Mantle是github公司创建和维护的,并且用在了自己的产品中;还有twitter也在使用。这些理由够不够???

入门教程

1.创建类

必须继承MTLModel类,并实现MTLJSONSerializing协议。 每一个model都要从MTLModel类继承,并实现 +(NSDictionary *)JSONKeyPathsByPropertyKey;方法,该方法是用来对应NSDictionary中Key与属性关系的。

举个例子:

我们现在对这个JSON数据进行转换。

+JSONKeyPathsByPropertyKey 方法返回一个JSON key与model属性一一对应的字典。这样,mantle才能进行转换。

2.值转换

日期转换

Mantle可以对NSString,NSNumber等类型进行自动转换,但对于enum类型,NSUrl,boolean,或者自定义的类型,需要进行手工指定转换。

转换的办法就是对每一个需要转换的属性,实现一个方法。具体的格式如下: +JSONTransformer,返回NSValueTransformer类型的数据。

NSUrl ↔ NSString 之间的转换

CLLocationCoordinate2D ↔︎ JSON object

enum ↔︎ JSON string

BOOL ↔︎ JSON boolean

3.将json数据转换成model对象

4.将model对象转化成json

如果model中包含一些属性,这些属性不是从json数据中转换来的。这时候,你需要做些设置,防止mantle在把model转成json时,转换这些属性。

5.数组和字典的转换

数组和字典值,使我们经常会遇到的json结构。Mantle帮我们做了很多工作,让我们很轻松的进行转换。

Mantle提供了2个方法进行转换:

看例子:

注:这篇文章大部分翻译自Mantle

Leave a Reply

Your email address will not be published.