Поэтому у меня есть некоторый код, например, так:NSURLConnection sendAsynchronousRequest: Как проверить готовый код состояния?
@interface RequestHandler()
@property (nonatomic) NSInteger statusCode;
@end
@implementation RequestHandler
- (bool)sendRequest:(NSString *)surveyorId withData:(NSData *)requestData
{
[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:true];
if (self.statusCode == 200)
{
return YES;
}
return NO;
}
Очевидно, что процедура будет продолжать в if-else
заявление до того, как запрос завершен. Поэтому self.statusCode
не установлен должным образом в делегате didReceiveResponse
перед его проверкой. Какой был бы лучший способ сделать это?
Я просто подумываю добавить еще одно свойство bool
, которое будет установлено в connectionDidFinishLoading
, а затем цикл, пока не будет установлено это свойство. Как только он это сделает, он проверит self.statusCode
. Однако я думаю, что это заблокирует поток, не так ли? Он ничем не отличается от sendSynchronousRequest
? Есть ли способ сделать это, не помещая его в фоновый поток?
Извините, возможно, я не дал понять это, но у меня есть эти два метода делегирования. Они работают так, как ожидалось, но в моем методе '' 'sendRequest'' оператор' '' if-else''' выполняется до вызова методов делегата. –
Конечно, это происходит, потому что делегаты будут вызваны, когда запрос будет завершен (это асинхронно). Итак, это 'if clause' должно быть помещено в делегат:' - (void) connection: (NSURLConnection *) connection didReceiveResponse: (NSURLResponse *) response' –
Но метод делегирования делегатов возвращает void. У меня есть другой класс, который вызывает этот класс '' RequestHandler''', который должен знать результат запроса. –