2011-11-16 4 views
2

Надеемся немного нажать в правильном направлении. У меня возникли проблемы с получением вложенного объекта для правильной сериализации, когда я отправляю POST в мое приложение rails с помощью RestKit. У меня есть следующие отображения:Сериализация вложенного объекта при отправке с приложения 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 и имя и т. д.

Я неправильно установил свои сопоставления?

Спасибо!

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?.

 Смежные вопросы

  • Нет связанных вопросов^_^