Работа в сети iOS, когда приложение становится активным - PullRequest
0 голосов
/ 07 февраля 2012

В моем текущем приложении для iOS мне нужно выполнить несколько сетевых операций, когда приложение станет активным (я бы предпочел получить все сразу, чем запрашивать информацию, когда пользователь нажимает на выделенную вкладку). Я использую UIViewController, который должен отображаться, когда приложение выходит на передний план и обрабатывает все сетевые компоненты в нем.
Это рекомендуемый способ сделать это?

Запросы, которые мне нужно выдать, выглядят примерно так:

request1
   if result1
      request2
         request3
   else if result2
      request4
         request3

Чтобы избежать спагетти-кода, есть ли библиотека для использования, которая включает цепные запросы, подобные этим? Я использую ASIHttpRequest, и я не нашел хорошего способа выполнить это (даже с очередью).

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

AFNetworking 0.9 добавлена ​​возможность пакетных запросов. AFHTTPCLient -enqueueBatchOfHTTPRequestOperationsWithRequests:progressBlock:completionBlock: ставит в очередь набор операций; когда каждая операция завершается, она запускает свой собственный completionBlock, как обычно, а также блок прогресса, который сообщает вам, сколько запросов завершено. Затем, когда все закончено, выполняется последний блок завершения.

Так что в вашем случае это может быть так просто:

[someClient enqueueBatchOfHTTPRequestOperationsWithRequests:[NSArray arrayWithObjects:request1, request2, request3, request4, nil] progressBlock:nil completionBlock:(controller logic here)];

2 голосов
/ 07 февраля 2012

В этом нет ничего плохого, если предположить, что ваш UIViewController является своего рода "загрузкой".Возможно, лучшим способом справиться с этим было бы создание подкласса NSObject, который бы управлял вашими сетевыми операциями, поэтому в ApplicationDidBecomeActive: вы можете просто отключить это, и при этом сохранить уверенность в своем приложении.

...