0

これはおそらく何百万回も尋ねられてきましたが、私が見つけたすべての例からどこにも得られていません。

私は次のクラスを持っています:

@interface LoginRequest : NSObject
{
    NSString* _deviceId;
}

@property (nonatomic, retain) NSString* deviceId;

@end

そして、これをサーバーに投稿しようとしています。これは、HTTPボディでフォームキー/値としてエンコードされています。

マッピングを設定するために以下を使用しています。

objectManager.serializationMIMEType = RKMIMETypeFormURLEncoded;

        RKObjectMapping* pmsg = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
        [pmsg mapKeyPath: @"deviceId" toAttribute:@"DeviceId"];

        RKObjectMapping* pmsgSerializeMapping = [pmsg inverseMapping];

        [objectManager.mappingProvider setSerializationMapping:pmsgSerializeMapping forClass:[LoginRequest class]];

        [objectManager.router routeClass:[LoginRequest class] toResourcePath:@"/login" forMethod:RKRequestMethodPOST];

これは、次の例から取得されました:https ://github.com/RestKit/RestKit/wiki/Posting-Data-Objects

次のエラーが発生します。

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<LoginRequest 0x8c9c980> valueForUndefinedKey:]: this class is not key value coding-compliant for the key DeviceId.'

オブジェクトを送信しようとしている方法は次のとおりです。

RKObjectManager *objectManager = [RKObjectManager sharedManager];

LoginRequest* request = [LoginRequest alloc];
request.deviceId = @"Test";

[objectManager postObject:request delegate: self];

誰か助けてもらえますか?

更新:カスタムキーコードマッピングを使用しない場合は、機能することを確認できます。私が働いているのは次のとおりです。

RKObjectMapping* pmsg = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
        [pmsg mapAttributes:@"DeviceId", nil];

        [objectManager.mappingProvider setSerializationMapping:pmsg forClass:[LoginRequest class]];

        [objectManager.router routeClass:[LoginRequest class] toResourcePath:@"/login" forMethod:RKRequestMethodPOST];
4

1 に答える 1

0

プロパティの名前は小文字の「deviceId」です。しかし、属性は大文字の「D」で始まる「DeviceId」だと言っています。

于 2012-09-27T14:39:24.547 に答える