0

我在使用 RestKit 将对象发布到我的服务器时遇到问题。我正在使用昨晚的 RestKit 版本,但至少从去年开始就一直是个问题。我正在做的是我试图将一个新对象保存到服务器,但是当我这样做时,我在请求被发送到服务器之前收到一个映射错误。问题是我的 JSON 响应键和我的 NSObject 属性是不对称的,即使 RestKit 文档说它们不必如此。在添加新的 POST 命令之前,我用于下载 JSON 响应的 GET 命令很好。RestKit 对非对称密钥映射没有任何问题,并且一切正常。但是,现在我正在尝试将 NSObject POST 回服务器,我收到 NSUknownKeyException 错误。如果我将密钥更改为对称,RKObjectMappingOperation 完成,POST 将实际发送到服务器。这对我来说似乎是一个错误,但我想确保这不是发布的要求。

这是我的代码详细信息。这是映射:

RKObjectMapping* restaurantReviewMapping = [RKObjectMapping mappingForClass:[RestaurantReview class] ];
[restaurantReviewMapping mapKeyPath:@"restaurant_id" toAttribute:@"restaurantId"];
[restaurantReviewMapping mapKeyPath:@"title" toAttribute:@"title"];
[restaurantReviewMapping mapKeyPath:@"review" toAttribute:@"review"];

这是 NSObject:

@interface RestaurantReview : NSObject

  @property (nonatomic, retain) NSNumber* restaurantId;
  @property (nonatomic, retain) NSNumber* rating;
  @property (nonatomic, retain) NSString* title;

@end

从对象映射文档复制的发布命令:

[[RKObjectManager sharedManager] sendObject:review toResourcePath:fullRestaurantReviewUrl usingBlock:^(RKObjectLoader *loader) {
    loader.method = RKRequestMethodPOST;
    loader.delegate = self;
    loader.serializationMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[RestaurantReview class] ];
}];

最后,我在请求发送到服务器之前收到的错误:

2012-08-23 14:57:49.118 [61331:c07] D restkit.network:RKObjectLoader.m:374 POST or PUT request for source object <RestaurantReview: 0x74d55c0>, serializing to MIME Type application/json for transport...
2012-08-23 14:57:49.119 [61331:c07] D restkit.object_mapping:RKObjectMappingOperation.m:655 Starting mapping operation...
2012-08-23 14:57:49.184 [61331:c07] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<RestaurantReview 0x74d55c0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key restaurant_id.'

这是一个错误还是我做错了什么?在此先感谢您的帮助。

4

1 回答 1

1

您想提供inverseMappingfor serializationMapping

于 2012-08-24T07:13:20.467 回答