Restkit 对象映射

Restkit ObjectMapping

我有一个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 来处理它。下面是我如何做对象映射

Class 1 - Description.h

@interface Description : NSObject

@property(nonatomic,strong) NSString* place;

@end

Class 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.'
***

无法找出问题。

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

Predictionsclass上的属性叫placeDescription,不是description

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

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