iOS - MBProgressHUD - асинхронный вызов JSON - делегат приложения

Я создаю приложение, которое имеет несколько вызовов Json. Для этой цели я создал новый метод в классе делегата приложения, который выполняет эти вызовы. Этот метод вызывается из другого контроллера представления моего приложения. Я хотел бы использовать MBProgressHUD во время каждого звонка. Поэтому я использовал асинхронный вызов для извлечения данных Json и использования MBProgressHUD.

  1. Шоу MBProgressHUD
  2. Do Asynch NSURLConnection Call
  3. Получить данные (и скрыть MBProgressHUD)
  4. Делай другие операции.

Проблема в том, что на шаге 4 ответ Json пуст. Есть ли способ проверить, завершены ли шаги 2 и 3?

Я должен использовать асинхронный вызов, потому что я использую MBProgressHUD.

 [MBProgressHUD showHUDAddedTo:view animated:YES];
    dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:linkChiamata]];
        // NSData* data;
        NSArray* json;
        json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        jsonResponse = [json objectAtIndex:0];

        dispatch_async(dispatch_get_main_queue(), ^{
            [MBProgressHUD hideHUDForView:view animated:YES];
        });
    });


    //Esito chiamata JSON
    int esitoChiamata;
    esitoChiamata = [[jsonResponse objectForKey:@"codice"] intValue];

jsonResponse пуст для всех вызовов.

Заранее спасибо.

2 ответа

Вам нужно подождать, пока NSURLConnection делегирует метод успеха / неудачи, прежде чем вы будете выполнять другие операции.

Можете ли вы предоставить больше информации о том, как вы делаете вызов NSURLConnection? Вот один из способов сделать это.

Я думаю, что есть две возможности.

  • Вы можете использовать NSCondition для блокировки потока и ожидания условия, прежде чем продолжить. Простой пример здесь и его легко адаптировать к вашему решению.
  • Создайте функцию, работающую в фоновом режиме с блоком цвета лица. Смотрите мой ответ здесь

Надеюсь, это поможет вам.

Другие вопросы по тегам