Mantle是基于KVO實(shí)現(xiàn)的,必須是屬性才可以疚俱,普通的成員變量是無(wú)法使用Mantle的甸怕。
Model類(lèi)需要集成MTLModel,同時(shí)需要實(shí)現(xiàn)MTLJSONSerializing灰伟,告訴Mantle如何根據(jù)我們的規(guī)則把JSON格式轉(zhuǎn)換成Model Object拆又。
+(NsDictionary *)JSONKeyPathByPropertyKey
方法指明了如何把JSON的keypath和mode object的key對(duì)應(yīng)起來(lái)儒旬。
+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key
方法用來(lái)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,但是會(huì)有大量if-else if-else帖族。
例子:
+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key
{
if([key isEqualToString:@"xxx"]){
return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
//將number轉(zhuǎn)換成要得到的格式返回
return xxx;
} reverseBlock:^id(NSString *str){
//將str轉(zhuǎn)換成要得到的格式返回
return xxx;
}
}
return nil;
}
可以用
+ (NSValueTransformer *)<key>JSONTransformer
方法來(lái)實(shí)現(xiàn)轉(zhuǎn)換model栈源。
例子:
+(NSValueTransformer *)XXXJSONTransformer
{
return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
//將number轉(zhuǎn)換成要得到的格式返回
return xxx;
} reverseBlock:^id(NSString *str){
//將str轉(zhuǎn)換成要得到的格式返回
return xxx;
}
}
轉(zhuǎn)化model:
xxxx *xxx = [MTLJSONAdapter modelOfClass:[xxxx class] fromJSONDictionary:json error:nil];
轉(zhuǎn)化json:
NSDictionary *json = [MTLJSONAdapter JSONDictionaryFromModel:xxx];