2011-11-16 1 views
2

바른 방향으로 약간 누르기를 원합니다. RestKit을 사용하여 레일 앱에 POST 할 때 중첩 된 객체를 올바르게 직렬화하는 데 문제가 있습니다. 나는 다음과 같은 매핑이 : 서버에 게시 한 후iOS에서 Rails 앱으로 게시 할 때 중첩 된 객체 직렬화

RKObjectMapping *cartSerializationMapping = [RKObjectMapping mappingForClass:[TOCart class]]; 
[cartSerializationMapping mapKeyPath:@"place.placeID" toAttribute:@"order[external_id]"]; 

//map the line items serialization mapping 
RKObjectMapping *lineItemSerializationMapping = [RKObjectMapping mappingForClass:[TOLineItem class]]; 
[lineItemSerializationMapping mapKeyPath:@"itemID" toAttribute:@"itemID"]; 
[lineItemSerializationMapping mapKeyPath:@"name" toAttribute:@"name"]; 

[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:lineItemSerializationMapping forClass:[TOLineItem class]]; 

//add relationship bw line items to TOLineItem 
[cartSerializationMapping mapKeyPath:@"line_items" toRelationship:@"order[line_items]" withMapping:lineItemSerializationMapping serialize:YES]; 

[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:cartSerializationMapping forClass:[TOCart class]]; 

를 직렬화는 부모 객체가 아니라 중첩 된 LINE_ITEM 개체에 대해 작동합니다

Started POST "/orders" for 127.0.0.1 at 2011-11-16 04:05:58 -0800 
Processing by OrdersController#create as JSON 
Parameters: {"order"=>{"line_items"=>["<TOLineItem: 0x8aafdb0>"], "external_id"=>"4ae8a535f964a52024b121e3"}} 

내가 LINE_ITEM이 항목 ID와 이름으로 직렬화 할 등 ...

매핑을 잘못 설정 했습니까?

감사합니다.

UPDATE :

내 TOCart 클래스 :

난 항상 다음 [myMappingFromApi inverseMapping] 선택으로 직렬화 매핑을 만들 실체 &에 API에서지도를 내 매핑을 정의
#import <Foundation/Foundation.h> 
@class TOPlace; 

@interface TOCart : NSObject 
{ 
    NSNumber *cartID; 
    TOPlace *place; //post to external id 
    NSString *state; 
    NSMutableArray *line_items; 
} 
@property (nonatomic, retain) NSNumber *cartID; 
@property (nonatomic, retain) TOPlace *place; 
@property (nonatomic, retain) NSString *state; 
@property (nonatomic, retain) NSMutableArray *line_items; 

@end 
+0

TOCart 클래스를 게시 할 수 있습니까? (ivars 또는 속성 정의) – mja

+0

장바구니 클래스로 업데이트되었습니다. Thx – chourobin

+0

나는 보통 API에서 엔티티로 매핑하기 위해 매핑을 정의한 다음 inverseMapping 선택기를 사용하여 직렬화 매핑을 만듭니다. 이것은 내 빛을 비춰 줄 수 있기 때문에 내 다른 대답을 한번보세요. - http://stackoverflow.com/questions/7726437/restkit-how-does-one-post-an-array-of-objects/7726829#7726829 – mja

답변