Mantle的使用

作者: 浅陌 | 来源:发表于2015-03-18 12:00 被阅读1247次

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

    相关文章

      网友评论

        本文标题:Mantle的使用

        本文链接:https://www.haomeiwen.com/subject/wxtwxttx.html