Как определить, ЧТО NSURLConnection завершил загрузку, когда есть несколько? - PullRequest
4 голосов
/ 19 марта 2010

Запуск нескольких NSURLConnections (в одном UIViewController) для сбора различных видов данных. Когда они возвращаются (-connectionDidFinishLoading), я хочу что-то делать с данными, в зависимости от типа полученных данных. Но одна проблема, КАК Я ЗНАЮ, ЧТО NSURLConnection вернулся? Мне нужно знать, чтобы я мог предпринять действия, специфичные для типа полученных данных. (Например, отобразить обновление Twitter, если это были данные Twitter XML). (Например, отобразить изображение, если это была фотография)

Как люди обычно решают это?

1 Ответ

13 голосов
/ 19 марта 2010

Вы сохраняете указатели на оба соединения в делегате и сравниваете их с параметром connection в connection:didReceiveData: и connectiondidFinishLoading:

Например:

@interface Foo : NSObject {
    NSURLConnection *connection1;
    NSURLConnection *connection2;
}

и

connection1 = [NSURLConnection connectionWithRequest:request1 delegate:self];
connection2 = [NSURLConnection connectionWithRequest:request2 delegate:self];

и

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    if(connection == connection1) {
        // Connection 1
    } else if(connection == connection2) {
        // Connection 2
    }
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    if(connection == connection1) {
        // Connection 1
    } else if(connection == connection2) {
        // Connection 2
    }
}
...