Mantle的使用

Author Avatar
新风作浪 7月 26, 2015
  • 在其它设备中阅读本文章

关于Mantle

项目地址:https://github.com/Mantle/Mantle

Mantle介绍:
Mantle 是Github团队开源出来的一项能够简化Cocoa 和 Cocoa Touch 应用的Model层,避免每次重写-(instancetype)initWithAttributes:(NSDictionary *)attributes;实例方法,并且进行类似[[[attributes objectForKey:@"key"] valueForKeyPath:@"key"] integerValue] 的取值操作。

###项目中服务器端返回的内容,我需要进行自己的一些处理数据,以及处理数据遇到的问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"count": 63778,
"type": "0",
"yuwen_edition": "人教版|北师大版|沪教版|浙教版|苏教新版|S版",
"title": "左手边的织女,你在哪里?",
"url": "",
"qid": "13660|13652|13663|13676|13668",
"cover": "http://file.haojiazhang123.com/static/server/flow/201508/905fe1b2-4716-11e5-8074-00163e000ba7.jpg",
"grade": "学龄前|一年级|二年级|三年级|四年级|五年级|六年级|初中",
"label": "科学小达人",
"subtype": null,
"label_color": "blue",
"location": "全国通用",
"push_date": "2015-08-21 00:00",
"time": "2015-08-20T16:36:34",
"shuxue_edition": "人教版|北师大版|沪教版|浙教版|苏教新版|S版",
"share_count": 154,
"has_coin": "0",
"id": 516
},

###BOOL型数据处理

1
2
3
4
5
6
7
8
9
+ (NSValueTransformer *)has_coinJSONTransformer
{
NSDictionary *dictionary = @{@"0":@(NO),
@"1":@(YES)};
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:dictionary];
}

###处理枚举类型数据

1
2
3
4
5
6
7
+ (NSValueTransformer *)typeJSONTransformer{
NSDictionary *dictionary = @{@"0":@(ContentSubjectType),
@"1":@(ContentLinkType)};
return [NSValueTransformer mtl_valueMappingTransformerWithDictionary:dictionary];
}

###转成URL对象

1
2
3
4
+ (NSValueTransformer *)urlJSONTransformer{
return [NSValueTransformer valueTransformerForName:MTLURLValueTransformerName];
}

#####【需要注意】
如果后台返回的字符串中带有中文,需要让后台做一下转码,不然程序会崩。
以为这是Mantle的一个bug,官方给出回答让转码处理,还是转码处理吧。或者就不要转成URL对象了,还是有String类型进行接收妥当。
https://github.com/Mantle/Mantle/issues/603

###空对象处理
遇到这样一个空对象处理问题,描述和处理方法已在这个issue记录 https://github.com/Mantle/Mantle/issues/595

参考内容:http://bawn.github.io/ios/2014/12/11/Mantle.html

###处理BOOL类型
http://www.objc.at/mantle
https://github.com/Mantle/Mantle/issues/145
http://stackoverflow.com/questions/24670702/mantle-convert-0-and-1-to-bool-automatically


没写完,希望有时间好好梳理一下,然后整理出来