2017-05-04 32 views
0

投稿する空のオブジェクトをエンドポイントにマップする方法を探していました。コールはPOSTである必要がありますが、エンドポイント(空のボディ)にポストされたデータがないようにする必要があります。RestKitを使用して投稿データなしで投稿する方法

RestKit: How to handle empty response.body?と同じトリックを試しましたが、代わりにRKRequestDescriptorを使用しました。 「、RKRequestDescriptorオブジェクトはそのターゲットクラスNSMutableDictionaryあるマッピングで初期化する必要がありました:

キャッチされない例外のpostObject方法 『nsnullを』([RKObjectMapping requestMapping]を参照してくださいそう

RKObjectMappingpostData:nilを使用するときは、次のエラーにつながります); RKRequestDescriptorのマッピングにNSNullを使用して

が動作しているようですが、マッピングアクションを失敗するnilようです。

答えて

1

エラーが示すように、マッピングアクションのためにNSMutableDictionaryを探しています。だから空のようにの代わりにnilpostObjectのトリックします。

AFRKHTTPClient *client = [self getClient]; 

RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client]; 

RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[NSNull class]]; 
[objectManager addRequestDescriptor: 
[RKRequestDescriptor requestDescriptorWithMapping:requestMapping 
             objectClass:[NSNull class] 
             rootKeyPath:nil 
              method:RKRequestMethodAny]]; 

RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[NSNull class]]; 
[objectManager addResponseDescriptor: 
[RKResponseDescriptor responseDescriptorWithMapping:responseMapping 
               method:RKRequestMethodPOST 
             pathPattern:nil 
              keyPath:nil 
             statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]; 

[objectManager postObject:@{} // <-- this works, but nil doesn't 
         path:@"/api/some/endpoint" 
        parameters:nil 
         success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
          // succes code here 
         } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
          // failure code here 
         }]; 
関連する問題