我使用mantle进行模型映射,使用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];但对我来说,这件事应该大功告成。我很好奇,不管怎么说,都是通过大衣来完成的,而不是手动改变结果。
发布于 2015-05-26 16:05:50
请参阅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]};
}当initWithBaseURL..时已自动设置P.S. responseSerializer,如果您再次重置,它可能会失败。
https://stackoverflow.com/questions/30100766
复制相似问题