1

今、私がやろうとしているのは、/api/v1/login サービスに投稿することです。次に、応答を取得したら、それを UserToken オブジェクトにマップします。

現在、UserLogin データを投稿するために次のコードが機能していますが、応答をオブジェクトにマッピングしていません。

- (void) postLogin
{

//Setup Login data
UserLogin *l = [[UserLogin alloc] initWithUsername:[usernameField text] andPassword:[passwordField text]];

//Setup Routes
RKObjectRouter *router = [RKObjectManager sharedManager].router;
[router routeClass:[UserLogin class] toResourcePath:@"/api/v1/login" forMethod:RKRequestMethodPOST];

//Setup Token Mapping
RKObjectMapping *UserTokenMapping = [RKObjectMapping mappingForClass:[UserToken class]];
[UserTokenMapping mapKeyPath:@"authentication_token" toAttribute:@"token"];
//[[[RKObjectManager sharedManager] mappingProvider]setMapping:UserTokenMapping forKeyPath:@""];
[[RKObjectManager sharedManager].mappingProvider registerMapping:UserTokenMapping withRootKeyPath:@""];

//Setup Mapping for UserLogin class
RKObjectMapping *UserLoginMapping = [RKObjectMapping mappingForClass:[UserLogin class]];
[UserLoginMapping mapKeyPath:@"login" toAttribute:@"userName"];
[UserLoginMapping mapKeyPath:@"password" toAttribute:@"passWord"];
[[RKObjectManager sharedManager].mappingProvider registerMapping:UserLoginMapping withRootKeyPath:@""];

[[RKObjectManager sharedManager] postObject:l delegate:self];

}

- (void)objectLoader:(RKObjectLoader *)objectLoader didLoadObjects:(NSArray *)objects
{
  NSLog(@"objects[%d]", [objects count]);
}

応答は次のように返されます。

{"message":"Login successful.","authentication_token":"2cksmLGr9hB5kLF3eRTu"}

objectLoader メソッドは次を返します。

2012-09-26 23:49:57.046 voxpop_iphone[92118:c07] objects[0]

ここで欠けているものを誰かが助けてくれますか? ありがとうございます!

4

1 に答える 1

0

私は同じ問題を抱えていて、非推奨の方法を使用して正しいマッピングを調整しました

その代わり

[[RKObjectManager sharedManager] postObject:l delegate:self];

使った

[objectManager postObject:self mapResponseWith:UserTokenMapping delegate:self];
于 2012-12-21T08:52:28.237 に答える