1

我正在使用restkit 0.20,从GET返回的对象不是Category类型而是NSDictionary?

这是我的模型

 

#import <Foundation/Foundation.h>

@interface Category : NSObject 

@property (nonatomic, copy) NSString* identifier;
@property (nonatomic, copy) NSString* description;
@property (nonatomic, copy) NSString* name;

@end

json

 

    [
      {
        "category": {
          "_id": "50fc579d81d79d4db0000001",
          "name": "Category 0"
        }
      },
      {
        "category": {
          "_id": "50fc579d81d79d4db0000006",
          "name": "Category 0"
        }
      } 
    ]

映射

RKObjectMapping *categoryMapping = [RKObjectMapping requestMapping];
[categoryMapping addAttributeMappingsFromDictionary:@{@"category._id": @"identifier", @"category.name": @"name"}];
[objectManager addRequestDescriptor: [RKRequestDescriptor requestDescriptorWithMapping:categoryMapping objectClass:[Category class] rootKeyPath:nil]];
RKResponseDescriptor *categoryResponseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:categoryMapping pathPattern:@"/categories" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:categoryResponseDescriptor];

如果我调用 [RKObjectManager.sharedManager getObjectsAtPath:@"/categories",我会返回一个数组:) 但对象不是类别类型,而是 NSDictionary。

    NSLog(@"%@",[猫类]);
    2013-01-26 12:01:17.247 应用程序[18943:c07] __NSDictionaryM

如果我调用 dat.name,应用程序将崩溃

4

2 回答 2

0

是的,返回的对象总是字典,你应该将它们映射到一个类:

Category* c= [Category new];
c.identifier= dict[@"_id"];
c.name= dict[@"name"];

每个字典都取自你得到的数组。

于 2013-01-26T11:42:19.960 回答
0

哎呀



    RKObjectMapping* catMapping = [RKObjectMapping requestMapping];

我现在正在使用



    RKObjectMapping* catMapping = [RKObjectMapping mappingForClass:[Category class]];

我又滚了:)

于 2013-01-26T14:17:47.277 回答