Restkit ObjectMapping

时间:2015-04-09 13:23:14

标签: ios objective-c json restkit

我有一个json如下

    {  
   "predictions":[  
      {  
         "description":"User1",
         "id":"75b8c57b4443f4b881f0efc94afd52437232aee9"
      },
      {  
         "description":"User2",
         "id":"82aa3303704041cda0e4fc34024d383dbf923604"
      },
      {  
         "description":"User3",
         "id":"f88f669a30934ef599bccf86c0236426cf2d313e"
      },
      {  
         "description":"User4",
         "id":"fa9ae7b65fa52bffdabf00d69e7db5cd37539781"
      },
      {  
         "description":"User5",
         "id":“66df3fd7e400eb31efd3ac935036aab2c02b03f0"
      }
   ],
   "status":"OK"
}

我正在使用RestKit来处理它。下面是我如何进行对象映射

第1类 - Description.h

@interface Description : NSObject

@property(nonatomic,strong) NSString* place;

@end

第2类 - Predictions.h

@interface Predictions : NSObject

@property(nonatomic,strong) Description* placeDescription;

@end

在我的网络界面中,我做了

-(RKResponseDescriptor*)rkObjectMappingforAutoSuggest:(NSString**)objectPath{

    RKObjectMapping* descriptionMapping = [RKObjectMapping mappingForClass:[Predictions class]];
    [descriptionMapping addAttributeMappingsFromDictionary:@{
                                                          @"description":@"description"}];

    RKObjectMapping* responseMapping = [RKObjectMapping mappingForClass:[Description class]];
    [responseMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"predictions"
                                                                                    toKeyPath:@"predictions"
                                                                                  withMapping:descriptionMapping]];

    RKResponseDescriptor *responseDescriptor =
    [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
                                                 method:RKRequestMethodGET
                                            pathPattern: objectPath
                                                keyPath:nil
                                            statusCodes:[NSIndexSet indexSetWithIndex:200]];

    return responseDescriptor;
}

我只需要在回复中说明。

我想我在数据映射中犯了一些错误。该应用程序正在崩溃以下消息

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<Predictions 0x15ef98d0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key description.'
***

无法找出问题。

1 个答案:

答案 0 :(得分:1)

您正在将JSON中的description键映射到description对象上的Predictions键,该键不存在。

Predictions类的属性称为placeDescription,而不是description

将传递给addAttributeMappingsFromDictionary:的词典替换为:

@{
    @"description":@"placeDescription"
}