RestKit 0.20 - 使用keyPath进行映射

时间:2013-11-06 16:09:20

标签: ios restkit restkit-0.20

这是我的回复正文:

{
  "bsqn": 5,
  "results": [
    {
      "sqn": 1,
      "res": "oldu!"
    }
  ]
}

我想通过使用这个keyPath来获取我真正需要的“res”属性:“bsqn.res”

//TestResponse.h
@interface TestResponse : NSObject

@property (nonatomic, copy) NSString *res;

+ (RKObjectMapping *)objectMapping;

@end

// TestResponse.m
@implementation TestResponse

+ (RKObjectMapping *)objectMapping
{
    RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]];
    [mapping addAttributeMappingsFromDictionary:@{@"res": @"res"}];

    return mapping;
}

@end


RKResponseDescriptor *newDesc = [RKResponseDescriptor responseDescriptorWithMapping:    
[TestResponse objectMapping] method:RKRequestMethodPOST pathPattern:nil keyPath:@"bsqn.res"     
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

但它给出了这个错误:

this class is not key value coding-compliant for the key hashcode

有没有办法做我想要的?感谢..

1 个答案:

答案 0 :(得分:1)

在您的JSON中,bsqn.res不存在。 bsqn只是一个字符串。

将您的回复描述符更改为keyPath:@"results",RestKit会将结果数组中的每个项目映射到TestResponse的新实例,并设置res属性。