2013-06-24 11 views
1

我有4个NSManagedObjects,即Item,Listing,PaymentMethod和HandlingTime,使Item与包含1-n关系的Listing有1-1关系PaymentMethod和Listing与HandlingTIme有1-1关系。当我尝试发布/放置一个项目时,以下映射对于项目发布/放置服务器操作的Item-Listing和Listing-HandlingTime关系起作用,但不会为Listing-PaymentMethods生成正确的JSON。RestKit 0.20.2生成不正确的JSON输出用于发送/放置操作中的子对象集合

NSDictionary *itemRKRequestMapping = @{ 
     @"id" : @"eid", 
     @"title" : @"title", 
     @"listing.id" : @"listing.eid", 
     @"listing.title" : @"listing.title", 
     @"listing.item.id" : @"listing.item.eid", 
     @"listing.handlingTime.id" : @"listing.handlingTime.eid", 
     @"listing.handlingTime.title" : @"listing.handlingTime.title", 
     @"listing.paymentMethods.id" : @"listing.paymentMethods.eid", 
     @"listing.paymentMethods.title" : @"listing.paymentMethods.title" 
}; 

它调用

[[RKObjectManager sharedManager] putObject:self.item path:@"items/1" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
      NSLog(@"Success"); }    failure:^(RKObjectRequestOperation *operation, NSError *error) { 
      NSLog(@"Failure saving item: %@", error.localizedDescription); 
     }]; 

当在正确的JSON用于paymentMethods产生以下JSON用于RKRequest操作。

{"id":1, "title":"item1", "listing":{"id":1,"item":{"id":1},"handlingTime":{"id":1, "title":"20 days"},"paymentMethods":{"id" : [1,2],"title":["VISA","MASTER"]} } } 

以下是paymentMethods所需的正确JSON输出。

{"id":1, "title":"item1", "listing":{"id":1,"item":{"id":1},"handlingTime":{"id":1, "title":"20 days"},"paymentMethods": [ { "id":1, "title": "VISA"}, { "id":2, "title": "MASTER"} ] } } 

GET操作使用,如下图所示本期特价货品上市关系relationshipMappingFromKeyPath这种对象模型多数民众赞成设置工作正常。

[itemMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"listing" toKeyPath:@"listing" withMapping:listingMapping]]; 
[listingMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"handlingTime" toKeyPath:@"handlingTime" withMapping:handlingTimeMapping]]; 
[listingMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"paymentMethods" toKeyPath:@"paymentMethods" withMapping:paymentMethodMapping]]; 

任何人都可以指出上面的RKRequest操作映射中的错误吗?

回答

0

您的问题是关系只包含一个项目,因此RestKit不知道它应该映射到数组中。要教RestKit,你需要分开适当的键的映射,明确地为它创建一个属性映射,将映射设置为forceCollectionMapping,然后将它添加到你的itemRKRequestMapping

forceCollectionMapping docs are here

相关问题