首先,不要害怕,他是幫助我們簡化問題的(比如自動降NSNull轉成nil,減少崩潰的可能),是以并不會難用。
我們通常用的就是MTLJSONAdapter,MTLModel
tip 1:繼承MTLModel,遵守MTLJSONSerializing協定
你需要實作這個方法來寫明一下映射關系,這個是我覺得Mantle不好的一點,如果屬性和傳過來的接口是一樣的名字,也必須要在這個方法裡一一對應,不太好,MJExtension就不需要。
用的時候
data轉字典
[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers 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的
也就是這個方法
當你的模型裡有的屬性是數組的話,你就需要告訴他一下,這個數組裡面放的是什麼模型,也就是實作這個方法
+ (NSValueTransformer *)recommendListJSONTransformer { // 這裡的命名方式同上
return [MTLJSONAdapter arrayTransformerWithModelClass:[XXXModel class]];
}
如果你的模型裡的一個屬性是另一個Model的話,那麼你就需要實作這個方法
+ (NSValueTransformer *)companyInfoJSONTransformer { // 這裡的命名方式同上
return [MTLJSONAdapter dictionaryTransformerWithModelClass:[XXXModel class]];
}
當你想把模型存儲起來的時候你可以醬紫操作。
歸檔操作
解檔操作
參考文章:http://blog.csdn.net/majiakun1/article/details/45829561