做一个奋斗不止的小公举!

只要你不放弃,等待你的将会是一片光明。

Mantle迅速上手

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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shagua_nan/article/details/51548419
个人分类: 第三方框架
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭