3

同じクラスに2つの異なるPOSTリソースパスを設定する方法がわからなかったため、RKObjectLoaderリクエストを手動で作成しようとしましたが、メソッドを次のように設定しても、POSTではなくGETリクエストを送信し続けるようです。役職。これが私のコードです

User *user = [[User alloc] init];
user.uname = uname;
user.pwd = pwd;


RKObjectManager *svc = [RKObjectManager sharedManager];
RKObjectMapping* mapping = [svc.mappingProvider objectMappingForClass:[User class]];

// what I was using before I needed two post resource paths//[svc postObject:user mapResponseWith:mapping delegate:self];

RKObjectLoader *loader = [svc loadObjectsAtResourcePath:authResourcePath objectMapping:mapping delegate:self];
[loader setMethod:RKRequestMethodPOST];
loader.userData = [NSNumber numberWithInt:RequestLogin];
loader.params = [NSDictionary dictionaryWithObjectsAndKeys:
                       uname, @"uname",
                       pwd, @"pwd",
                       nil];



[loader setSourceObject:user];
[loader send];
[user release];
4

2 に答える 2

6

POSTまたはPUTへのパスが複数ある場合、最も簡単な方法は、postObjectのブロック形式を使用することです。呼び出しと宛先resourcePathを自分で指定します。

[[RKObjectManager sharedManager] postObject:foo delegate:bar block:^(RKObjectLoader *loader) {
    loader.resourcePath = @"/my/destinationPath";
}];      

ある時点で、名前を使用してルートを明確にすることができる名前付きルートの概念を導入する場合がありますが、現時点では、純粋にHTTP動詞に基づいています。

ルーターにセカンダリパスを登録しないでください。また、セカンダリパスを完全に回避していることに注意してください。

于 2011-09-21T14:14:37.667 に答える
4

別のルートに別のobjectMappingが必要な場合、Blake Wattersの回答を完了するには、次のことを行う必要があります。

[[RKObjectManager sharedManager] postObject:query delegate:saveJobQueryHandler block:^(RKObjectLoader* loader) {
    loader.objectMapping = NEW_MAPPING;
    loader.resourcePath = @"/other/url";
    loader.targetObject = nil;  // Important
}];

loader.targetObject=nilの詳細については; sendObject:delegate:blockを読み取ります:

于 2012-02-14T07:36:03.757 に答える