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

しかし、それは私のためにオーバーコートで行われるべきです. 結果を手動で変換するのではなく、オーバーコートを介してそれを行う方法がとにかくあります。

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 に答える