希望能朝正确的方向努力。当我使用RestKit POST到我的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和name等...
我是否错误地设置了映射?
谢谢!
更新:
我的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 :(得分:2)
我总是将我的映射定义为从API映射到实体&amp;然后使用[myMappingFromApi inverseMapping]
选择器创建序列化映射。您可以在我对不同问题的答案中找到更多详细信息,但绝对相关:RestKit: How does one post an array of objects?。