У меня есть простое приложение, которое пытается войти в систему.Как заморозить мое приложение, чтобы ждать ответа?
вставка пользователя имя пользователя и пароль я вызвать метод в другом классе ->
if ([myBankLogger checkUserLogin:self.memberNumber.text :self.accessCode.text])
{
//Check if user credential is correct
NSLog(@"Corrct");
}
else
{
NSLog(@"Not correct");
}
В checkUserLogin
я отправить запрос HTTP на сервер, и это занимает минуту, чтобы получить отвечают:
-(bool) checkUserLogin :(NSString*)username :(NSString*)password
{
__block bool tmp= false;
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:string parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
if (responseObject[@"secret_token"])
{
NSLog(@"HERE");
tmp = true;
}
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
tmp = false;
}];
return tmp;
}
Как обычно, доза компилятора не дожидаться завершения обработки. Он возвращает false. Я исследовал и узнал, что я должен использовать это:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0ul);
dispatch_async(queue, ^{
// Perform async operation
// Call your method/function here
// Example:
// NSString *result = [anObject calculateSomething];
dispatch_sync(dispatch_get_main_queue(), ^{
// Update UI
// Example:
// self.myLabel.text = result;
});
});
Но я не уверен, где я должен поставить свой код? Оцените любое предложение или более простое решение.