私はいくつかのデータを要求するサーバーを持っています。
特定の名前の画像が存在するかどうかを確認していて、BOOL値(YESまたはNO)を返す必要がありますが、非同期リクエストは終了時にコールバックを呼び出すため、その方法がわかりません。メソッドがかなり前に終了し、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メソッドとまったく同じです。
助けてくれませんか?
PD:わかっています、このコードはとても悪いように見えますが、どうしたらよいかわかりません...