gpt4 book ai didi

objective-c - 如何在方法中返回带有异步请求的 BOOL? ( Objective-C )

转载 作者:行者123 更新时间:2023-12-04 00:44:11 24 4
gpt4 key购买 nike

我有一个服务器,我在其中请求一些数据。

我正在检查上面是否存在具有特定名称的图像,我需要返回一个 BOOL 值(是或否),但我不知道该怎么做,因为异步请求在完成时调用回调,所以当它完成方法很久以前就完成了并且它不返回 BOOL 值并且我不使用同步请求因为它阻塞了主线程。

这是我的代码(我知道这是错误的,但我还是写了它来展示我想做的事情的例子,因为我的英语不太好):

- (BOOL)imageDoesExistsOnTheServer:(NSString *)imageName {
BOOL exists;

NSString * query = [[NSString alloc] initWithFormat:@"request=IMAGE&imageName=%@", imageName];

DREasyURLRequest * imageExistsRequest = [[DREasyURLRequest alloc] initForSendDataToServerWithURLString:@"http://xxxxx.xxxxx/file.php" query:query];

[imageExistsRequest sendAsynchronouslyWithCompletionForStringAsResponse:^(NSString *receivedResponse) {
if ([receivedResponse isEqualToString:@"YES"]) {
__block BOOL exists = YES;
} else {
__block BOOL exists = NO;
}
}];

return exists;
}

(DREasyURLRequest 是我为保存一些代码而创建的 NSMutableURLRequest 的子类,但 sendAsynchronouslyWithCompletionForStringAsResponse: 与异步 NSMutableURLRequest 方法完全相同。

你们能帮帮我吗?

P.D:我知道,这段代码看起来很糟糕哈哈哈,但我不知道该怎么做......

最佳答案

该 block 不会被您的代码调用,因此您不能使用 return 为您的代码提供任何内容。相反,停止考虑返回值,并开始考虑行为。当你得到积极的回应时,你希望事情发生,而当你得到消极的回应时,你希望事情发生。因此,为这些行为中的每一个编写方法,并在您的 block 中的适当位置调用它们。

关于objective-c - 如何在方法中返回带有异步请求的 BOOL? ( Objective-C ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14161257/

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