Как автоматически сопоставить мантийный класс модели в случае отклика конверта с пальто?
Я использую мантию для отображения модели и пальто для сетевого запроса. Перекрытие автоматически сопоставляет результат с моделью, но при наличии отклика конверта я могу получить персонализированный отклик Перекрытия. Но проблема в том, что ответ 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 ответ
Ссылаться на 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.., если вы перезагрузите его снова, он, вероятно, потерпит неудачу.