我正在使用外套进行模型映射和大衣以获取网络请求。大衣自动将结果映射到模型,但是当有信封响应时,我能够获得定制的大衣响应。但问题是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而不是手动转换结果。
答案 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,如果再次重置,它可能会失败。