2012-08-04 4 views
0

나는 서버에서 사용자 개체를 가져 오는거야와 함께 실패 결과를 처리하는 방법. 요청이 성공하면 내가 얻을 : 실패시RestKit : 다른 매핑

{ user = { 
     User = { id = 1; } 
} } 

내가 얻을 :

{ user = false; } 

내가 성공 사례에서 잘 작동 매핑이 있습니다 [mappingProvider setMapping:userMapping forKeyPath:@"user.User"];

그러나 실패의 경우를, 나는 다음과 같은 예외를 얻을 : 'NSUnknownKeyException', reason: '[<__NSCFBoolean 0x1c58f78> valueForUndefinedKey:]: this class is not key value coding-compliant for the key User.'을 나는 또한 user 키 패스에서 NSDictionary를 생성하는 매핑에 키 패스 User의 관계가 기쁨으로 userMapping 설정 시도 어느 한 쪽.

이 처리하는 올바른 방법은 무엇입니까? 나는 user 키 패스에 대한 두 개의 서로 다른 매핑을해야하고, 객체가 NSBoolean 디코딩되고 싶어 여부에 여부에 따라 어느 하나를 선택하는 것처럼 내가 RKDynamicObjectMapping을 제안 그것은 ...

답변

0

을 보인다. 이 두 가지 맛을 하나 하나가 당신을 위해 작동합니다 :

- (void)setObjectMapping:(RKObjectMapping *)objectMapping whenValueOfKeyPath:(NSString *)keyPath isEqualTo:(id)value; 

또는

+ (RKDynamicObjectMapping *)dynamicMappingUsingBlock:(void(^)(RKDynamicObjectMapping *dynamicMapping))block; 
+0

내가 그것을'RKDynamicObjectMapping'를 사용하여 시도했다, 그러나'(ID) 값 '이 기대 입력 한 내용을 알아낼 수 (그것은 부서지면서 계속되었다). whenClassOfKeyPath : isEqualToClass : 나는 오히려 setObjectMapping'같은 기능을 필요가 있다고 생각' – damian

0

서버는 아마 (희망) 등 (400) 등이 .. 그래서 아마 Restkit는 HTTP 오류 코드를 반환 오류 매핑을 사용하여 응답을 매핑하려고합니다. @ 폴 오류 매핑에 적용 says..but로

아마도 당신이해야 할 것은 동적 객체 매핑입니다. 내가 여기 당신이 내가 무슨 말을하는지 알 수 있도록 당신에게 간단한 오류 매핑을 떠나 :

RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; 
[errorMapping mapKeyPath:@"msg" toAttribute:@"errorMessage"]; 
[[[RKObjectManager sharedManager] mappingProvider] setErrorMapping:errorMapping];