Mantle是基于KVO实现的,必须是属性才可以,普通的成员变量是无法使用Mantle的。
Model类需要集成MTLModel,同时需要实现MTLJSONSerializing,告诉Mantle如何根据我们的规则把JSON格式转换成Model Object。
+(NsDictionary *)JSONKeyPathByPropertyKey
方法指明了如何把JSON的keypath和mode object的key对应起来。
+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key
方法用来对数据进行转换,但是会有大量if-else if-else。
例子:
+(NSValueTransformer *)JSONTransformerForKey:(NSString *)key
{
if([key isEqualToString:@"xxx"]){
return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
//将number转换成要得到的格式返回
return xxx;
} reverseBlock:^id(NSString *str){
//将str转换成要得到的格式返回
return xxx;
}
}
return nil;
}
可以用
+ (NSValueTransformer *)<key>JSONTransformer
方法来实现转换model。
例子:
+(NSValueTransformer *)XXXJSONTransformer
{
return [MTLValueTransformer reversebleTransformerWithForwardBlock:^id(NSNumber *number){
//将number转换成要得到的格式返回
return xxx;
} reverseBlock:^id(NSString *str){
//将str转换成要得到的格式返回
return xxx;
}
}
转化model:
xxxx *xxx = [MTLJSONAdapter modelOfClass:[xxxx class] fromJSONDictionary:json error:nil];
转化json:
NSDictionary *json = [MTLJSONAdapter JSONDictionaryFromModel:xxx];
网友评论