1

loadObjectsAtResourcePath:delegate: で GET を実行するときに呼び出される必要な RKObjectLoaderDelegate メソッドをすべて取得できます。

ただし、post:params:delegate: で POST を実行すると、request:didLoadResponse: のみが呼び出されます。objectLoader:didLoadObjects: や objectLoader:didFailWithError: などのメソッドも呼び出されません。

これがコードスニペットです。

    self.appObjectManager.client = [RKObjectManager managerWithBaseURLString:self.webServiceURLString];
    [self.appObjectManager.client setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [self.appObjectManager.client setValue:@"" forHTTPHeaderField:@"Cookie"];

    RKObjectMapping* sessionInformationMapping = [RKObjectMapping mappingForClass:[sessionInformation class]];
    [sessionInformationMapping mapKeyPath:@"uid" toAttribute:@"userID"];
    [self.appObjectManager.mappingProvider setObjectMapping:sessionInformationMapping forKeyPath:@"user"];

    NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"abc", @"pwd", nil]
                                                                         forKeys:[NSArray arrayWithObjects:@"username", @"password", nil]];

    [self.appObjectManager.client post:resourcePath params:parameters delegate:self];

ここで同様の質問を見つけましたが、役に立たないようです。 RestKit: postObject に対して呼び出されるデリゲート メソッドは?

4

1 に答える 1

0

post:params:delegate: の代わりにこれを試してください:

[self.appObjectManager loadObjectsAtResourcePath:resourcePath usingBlock:^(RKObjectLoader * loader) {
  loader.method = RKRequestMethodPOST;
  loader.params = params;
  loader.delegate = self;
}];

objectLoader デリゲート メソッドは、応答が返されたときに呼び出される必要があります。

于 2012-12-12T13:17:21.280 に答える