1

我正在使用地幔进行模型映射,并使用外衣进行网络请求。Overcoat 自动将结果映射到模型,但是当有包络响应时,我可以获得自定义 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 来完成,而不是手动转换结果。

4

1 回答 1

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

PS responseSerializer 在 initWithBaseURL.. 的时候已经自动设置好了,如果再重新设置,可能会失败。

于 2015-05-26T08:05:50.090 回答