1

我在这里做了什么奇怪的事情吗?

我的类别被下载和映射,

产品也被下载并映射为日志记录所说的,

但是我的产品在每个类别下都是空的,thnx!

{
  "productsCategories" : [
    {
      "product" : [
        {
          "price" : 3.99,
          "title" : "Product A"
        },
        {
          "price" : 3.99,
          "title" : "ProductB "
        }
      ],
      "categoryTitle" : “a category“
    }
  ]
}




RKObjectMapping *productCategoryMapping = [RKObjectMapping mappingForClass:[ProductCategory class]];
[productCategoryMapping addAttributeMappingsFromDictionary:@{
                                                             @"categoryTitle": @"tit"
                                                             }];

RKObjectMapping* productMapping = [RKObjectMapping mappingForClass:[Product class] ];
[productMapping addAttributeMappingsFromDictionary:@{
                                                     @"title": @"tit",
                                                     @"price": @"prc"
                                                       }];
[productCategoryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"product"
                                                                                       toKeyPath:@"product"
                                                                                     withMapping:productMapping]];


RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:productCategoryMapping method:RKRequestMethodPOST pathPattern:@"productByCategory" keyPath:@"productsCategories" statusCodes:[NSIndexSet indexSetWithIndex:200]];

NSURL *url=[NSURL URLWithString:@"http://www.example.com/REST/v2/"];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:url];
[manager addResponseDescriptor:responseDescriptor];

NSMutableDictionary *mutableParameters = [NSMutableDictionary dictionary];
[mutableParameters setValue:@"1" forKey:@"id"];
[manager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:productCategoryMapping method:RKRequestMethodPOST pathPattern:@"productByCategory" keyPath:@"productsCategories" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];

[manager postObject:request path:@"productByCategory" parameters:mutableParameters success:^(RKObjectRequestOperation *operation, RKMappingResult *result){

    self.productCategoryArr=result.array;
    [self.tblDetails reloadData];

}failure:^(RKObjectRequestOperation *operation, NSError *error) {

    RKLogError(@"Operation failed with error: %@", error);
    self.productCategoryArr=nil;

}];

日志说正在为每个产品映射对象,但我只得到

ProductCategory: 0x7bf53510
ProductCategory: 0x7be57f00

每个数组和 0 个对象

4

1 回答 1

1

假设您的 ProductCategory 类有

NSArray *Product
NSString * tit

创建一个顶级 RKObjectMapping 像,

RKObjectMapping * ProductCategoryResponseMapping = [RKObjectMapping mappingForClass:  [ProductCategoryResponse class]];

[ProductCategoryResponseMapping addAttributeMappingsFromDictionary:@{
                                                         @"productsCategories": @"productsCategories"
                                                         }];

并创建应该具有的新类 ProductCategoryResponse

NSArray * productsCategories

使用 ProductCategoryResponseMapping 作为响应描述符。

现在,您的响应将包含 productsCategories 数组,每个都有 ProductsCategories 数组和 String tit。

于 2014-11-10T00:42:57.510 回答