Mantle迅速上手

来源:互联网 发布:哪里买鲜花便宜知乎 编辑:程序博客网 时间:2024/06/09 15:51

首先,不要害怕,他是帮助我们简化问题的(比如自动降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

0 0
原创粉丝点击