2011-11-16 16 views
2

希望能夠在正確的方向上取得一些進展。我在使用RestKit POST到我的Rails應用程序時無法正確序列化嵌套對象。我有以下映射:當從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序列化到ITEMID和名稱etc ...

我設置了錯誤的映射嗎?

謝謝!

UPDATE:

我TOCart類:

#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

回答

2

我總是定義我的映射,從API映射到實體&然後用[myMappingFromApi inverseMapping]選擇創建序列化映射。你可以在我的答案中找到更多細節,但有一些不同的問題,但絕對相關:RestKit: How does one post an array of objects?