0

RestKitを使用してサーバーにオブジェクトを投稿する際に問題が発生しました。昨夜のバージョンのRestKitを使用していますが、少なくとも昨年から問題になっています。私がやっていることは、新しいオブジェクトをサーバーに保存しようとしていますが、保存すると、リクエストがサーバーに送信される前にマッピングエラーが発生します。問題は、RestKitのドキュメントに非対称である必要はないと記載されていても、JSON応答キーとNSObject属性が非対称であるということです。新しい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

inverseMappingを提供したいserializationMapping

于 2012-08-24T07:13:20.467 に答える