Mantle的使用

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 *)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];

你可能感兴趣的:(Mantle的使用)