gpt4 book ai didi

iphone - 奇怪的 RestKit/RKRequestQueue 同步问题

转载 作者:行者123 更新时间:2023-11-28 22:58:27 24 4
gpt4 key购买 nike

我有一个使用 RestKit 的支持 ARC 的项目,虽然我的大部分请求都是异步完成的,但我在执行同步请求时遇到了问题:

在我的 AppDelegate 中:

else if (![IKUserController loggedInUserIsAuthenticated]) {
IKLoginViewController *loginVC = [[IKLoginViewController alloc] init];
loginVC.scenario = SCENARIO_EXISTING;
[self.window.rootViewController presentModalViewController:loginVC animated:YES];
}

loggedInUserIsAuthenticated 的实现中:

+ (BOOL)loggedInUserIsAuthenticated {
IKUser *user = [IKUserController loggedInUser];

if (!user) {
return NO;
}
else {
NSString *username = user.userName;
NSString *password = user.userPassword;

if ([IKUserController loginWithUsername:username password:password]) {
return YES;
}
else {
return NO;
}
}

return NO;
}

loginWithUserName:password:

+ (BOOL)loginWithUsername:(NSString *)username password:(NSString *)password {

//return YES;

NSDictionary *params = [[NSDictionary alloc] initWithObjectsAndKeys:username, @"username", password, @"password", nil];

RKResponse *response = [[[RKClient sharedClient] post:@"/user/authenticate" params:params delegate:nil] sendSynchronously];

if (response.isOK) {
return YES;
}
else {
return NO;
}

return NO;
}

和错误:

*** Assertion failure in -[RKRequestQueue removeRequest:decrementCounter:], /Users/admin/Documents/dev/RestKit/Code/Network/RKRequestQueue.m:350

最佳答案

RKClient 方法 post 已经将请求添加到默认请求队列中,所以我认为问题在于您发送了两次请求 - 一次异步,一次同步。不要使用 RKClient post 方法,而是手动配置请求。 RKClient 上有一个方法setupRequest,这会让你更容易,你只需要定义 url,方法和参数,像这样:

RKRequest* req = [RKRequest requestWithURL:reqURL delegate:self];
[req setMethod:RKRequestMethodPOST];
[req setParams:params];

[client setupRequest:req];

[req sendSynchronously];

关于iphone - 奇怪的 RestKit/RKRequestQueue 同步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10370356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com