2011-07-17 1 views
7

주어진 배열 인덱스를 RestKit (OM2)가있는 속성으로 매핑하고 싶습니다. 내가 좋아하는 것RestKit mapKeyPath to 배열 인덱스

{ 
    "id": "foo", 
    "position": [52.63, 11.37] 
} 

이 객체에 매핑 :

@interface NOSearchResult : NSObject 
@property(retain) NSString* place_id; 
@property(retain) NSNumber* latitude; 
@property(retain) NSNumber* longitude; 
@end 

난의 특성에 내 JSON에 위치 배열의 제한 값을 매핑하는 방법을 알아낼 수 없습니다 나는이 JSON을 내 객관적인 - 클래스. 매핑은 지금까지 이와 같습니다 :

RKObjectMapping* resultMapping = [RKObjectMapping mappingForClass:[NOSearchResult class]]; 
[resultMapping mapKeyPath:@"id" toAttribute:@"place_id"]; 

위도/경도 매핑을 어떻게 추가 할 수 있습니까? 나는 여러 가지 일을 시도했지만 작동하지 않습니다. 예컨대 :

[resultMapping mapKeyPath:@"position[0]" toAttribute:@"latitude"]; 
[resultMapping mapKeyPath:@"position.1" toAttribute:@"longitude"]; 

내 객체의 latitude로 JSON 중 position[0]을지도 할 수있는 방법이 있나요를?

답변

3

짧은 대답은 아니오 - key-value coding은 허용되지 않습니다. 컬렉션의 경우 max, min, avg, sum과 같은 집계 연산 만 지원됩니다.

가장 좋은 NOSearchResult에있는 NSArray 속성을 추가 할 수 아마도이 같은

// NOSearchResult definition 
@interface NOSearchResult : NSObject 
@property(retain) NSString* place_id; 
@property(retain) NSString* latitude; 
@property(retain) NSNumber* longitude; 
@property(retain) NSArray* coordinates; 
@end 

@implementation NOSearchResult 
@synthesize place_id, latitude, longitude, coordinates; 
@end 

및 정의 매핑 : 그 후

RKObjectMapping* resultMapping = [RKObjectMapping mappingForClass:[NOSearchResult class]]; 
[resultMapping mapKeyPath:@"id" toAttribute:@"place_id"]; 
[resultMapping mapKeyPath:@"position" toAttribute:@"coordinates"]; 

, 당신은 수동으로 좌표에서 위도와 경도를 할당 할 수 있습니다.

편집 : 위도/경도 할당을 할 수있는 좋은 장소 객체 로더 위임

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(id)object; 

아마
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects; 
+1

감사입니다 - 나는 그것이 작동하지 않을 것입니다 이미 두려워했다. 'didLoadObject'힌트가 정말 도움이되었습니다! – cellcortex

+2

더 나은 장소는 기본 배열 데이터 구조를 조작하는 lat 및 lon에 대한 사용자 정의 게터 및 설정자입니다. – Jon