ASIHttpRequest отправляет ответ от запроса ASync обратно для просмотра контроллера - PullRequest
2 голосов
/ 13 июля 2011

В моем приложении есть ViewControllers-> Уровень бизнес-логики (BLL) -> Уровень доступа к данным (DAL) -> (HttpApi) ИЛИ (SQLiteApi)

В моем классе HttpApi я использую ASIHttpRequest с асинхронными запросами.

Первоначально запросы поступают от ViewController и проходят через все вышеупомянутые слои.

Я хотел бы иметь возможность "внедрить" результат асинхронного запроса обратно в эту цепочку, чтобы он мог быть возвращен обратно в ViewController и обрабатываться промежуточными слоями в пути.

У меня такое ощущение, что мне нужны делегаты, но я не совсем уверен, что реализовать.

EDIT: Я думаю, что мне может понадобиться разработать цепочку обратного вызова, которая идет от HTTPAPI вплоть до контроллера представления ... Мне нужно будет использовать делегатов.

Итак, контроллер представления соответствует делегату BLL, а BLL соответствует делегату DAL и т. Д.

1 Ответ

4 голосов
/ 13 июля 2011

Я бы транслировал запрос после получения ответа, используя уведомление

[[NSNotificationCenter defaultCenter] postNotificationName:@"requestFinished" object:request];

Тогда любой из ваших классов может прослушивать следующее:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(requestFinished:) name:@"requestFinished" object:nil];

- (void)requestFinished:(NSNotification*)notification {
    ASIHTTPRequest *request = (ASIHTTPRequest*)[notification object];

    if ([[[request URL] absoluteString] isEqualToString:expectedURL]) {
        NSString *responseString = [request responseString];
        NSLog(@"RESPONSE %@", responseString);
    }
}
...