如何用大衣包裹响应自动映射到地幔模型类?

时间:2015-05-07 12:13:05

标签: ios github-mantle overcoat

我正在使用外套进行模型映射和大衣以获取网络请求。大衣自动将结果映射到模型,但是当有信封响应时,我能够获得定制的大衣响应。但问题是Overcoat响应是NSCFDictionary的响应,但它应该是MantleModel的响应。

return [RACSignal createSignal: ^RACDisposable *(id<RACSubscriber> subscriber){
  [[client rac_GET:@"/services" parameters:@{@"location": @"lat,lng"}] subscribeNext:^( OvercoatResponse *response){
    NSArray *res = response.result;//res[0] is _NSCFDictionary object, but it should be MantleModel Object
    [subscriber sendNext:res];
  } error:^(NSError *error) {
    NSLog(@"ERROR: %@", error);
  }
   ];
  return nil;
}];

我知道如何手动将结果转换为mantleModel:

 NSArray *mtlnArray = [MTLJSONAdapter modelsOfClass:[MantleModel class] fromJSONArray:response.result error:&error];

但是应该为我做大衣。无论如何,无论如何都要通过Overcoat而不是手动转换结果。

1 个答案:

答案 0 :(得分:0)

请参阅README.md

指定如何将响应映射到模型类 您必须覆盖+modelClassesByResourcePath并返回字典映射资源路径到模型类。

示例:

// TwitterClient.h

@interface TwitterClient : OVCHTTPSessionManager

// TwitterClient.m

+ (NSDictionary *)modelClassesByResourcePath {
    return @{ @"statuses/*": [Tweet class],
              @"users/*": [TwitterUser class],
              @"friends/ids.json": [UserIdentifierCollection class],
              @"followers/ids.json": [UserIdentifierCollection class]};
}

P.S。在initWithBaseURL ..时自动设置了responseSerializer,如果再次重置,它可能会失败。