gpt4 book ai didi

ios - 如何通过延迟从方法返回值?

转载 作者:行者123 更新时间:2023-12-01 20:20:56 25 4
gpt4 key购买 nike

我有一个框架和一个项目。我的框架负责Web服务。

在Project用户中,输入用户名和密码。然后,它通过在框架内调用sendLogin方法来传递这些参数。

在框架内部,需要花费一些时间来检查和验证用户名和密码。如果用户名和密码正确,它将从服务器获取 token 号。

到这里为止一切正常。但是我想知道如何将该 token 发送回主程序吗?

我尝试使用完成方法,但失败了。这是定义:

项目:

- (IBAction)bankLoginPressed:(id)sender
{
[registerUser sendLogin:^(NSInteger *accessCode){

NSLog(@"access code == %tu ",accessCode);

}];
}

内部框架
typedef void (^HttpCompletionBlock) (NSInteger *);

-(void) sendLogin :(HttpCompletionBlock)completionHandler
{
NSString *string = @"https://myserver/customer_authentication";
NSDictionary *parameters = @{@"member_id": @"1234", @"access_code": @"password", @"device_id":@"874627864"};

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:string parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject) {

NSLog(@"JSON: %@", responseObject);
if (responseObject[@"secret_token"])
{

NSLog(@"Secret is= %@",responseObject[@"secret_token"]);
//Here I needd to send back token number????

}
}
failure:^(NSURLSessionTask *operation, NSError *error)
{
NSLog(@"Error: %@", error);
}];
}

最佳答案

typedef void (^HttpCompletionBlock)     (NSString *token, NSError *error);

-(void) sendLogin :(HttpCompletionBlock)completionHandler
{
NSString *string = @"https://myserver/customer_authentication";
NSDictionary *parameters = @{@"member_id": @"1234", @"access_code": @"password", @"device_id":@"874627864"};

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:string parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject) {

NSLog(@"JSON: %@", responseObject);
if (responseObject[@"secret_token"])
{

NSLog(@"Secret is= %@",responseObject[@"secret_token"]);
//Here I needd to send back token number????
return completionHandler(responseObject[@"secret_token"],nil);

}
}
failure:^(NSURLSessionTask *operation, NSError *error)
{
NSLog(@"Error: %@", error);
return completionHandler(nil,error);
}];
}

- (IBAction)bankLoginPressed:(id)sender
{
[registerUser sendLogin:^(NSString *token, NSError *error){
if(error == nil)
{
NSLog(@"access code == %@ ",token);
}
else
{
NSLog(@"Error == %@ ",error);
}

}];
}

关于ios - 如何通过延迟从方法返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35765205/

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