天天看點

Mantle迅速上手

首先,不要害怕,他是幫助我們簡化問題的(比如自動降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