2017-05-04 22 views
0

게시 할 빈 개체를 끝점에 매핑하는 방법을 찾고있었습니다. 호출은 POST이어야하지만 엔드 포인트 (빈 본문)에 게시 된 데이터가 없어야하며 데이터없이 직접 엔드 포인트를 호출하는 것이 좋습니다.RestKit을 사용하여 게시물 데이터없이 게시하는 방법

나는 RestKit: How to handle empty response.body?과 같은 트릭을 시도했지만 대신 RKRequestDescriptor을 사용했습니다. '

catch되지 않은 예외 : RKRequestDescriptor 객체가 그 대상 클래스 NSMutableDictionary이다, 얻었다 매핑으로 초기화되어야의 postObject 방법'NSNull '을 ([RKObjectMapping requestMapping]를 참조 postData:nilRKObjectMapping에 사용하는 경우 이렇게

다음과 같은 오류로 연결); RKRequestDescriptor의 매핑을위한 NSNull를 사용

작동하는 것 같다,하지만 매핑 작업을 실패 할 nil 보인다.

답변

1

오류가 언급 했으므로 매핑 작업에 NSMutableDictionary이 필요합니다. 빈 을 nil 대신 @{}과 같이 사용하면 postObject에 트릭을 적용합니다.

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