NSURL из NSURLConnection?

Это кажется очень простым, так как для создания NSURLConnection я обычно делаю следующее:

NSURL *theURL = [NSURL URLWithString:urlString];
NSURLRequest *req = [NSURLRequest requestWithURL:theURL];
NSURLConnection *connection = [NSURLConnection connectionWithRequest:req delegate:self];

Но как я могу вернуть URL-адрес в методы делегата? Если не считать того, что я сам цепляюсь за них (я запускаю много подключений одновременно, так что это становится немного грязным). Кажется, я должен иметь возможность вернуть URL-адрес из соединения.

Я что-то упускаю?


person jbrennan    schedule 25.03.2010    source источник
comment
Вы когда-нибудь догадывались, как получить URL-адрес в - (void)connectionDidFinishLoading:(NSURLConnection *)connection с объектом NSURLConnection?   -  person Kapil Choubisa    schedule 07.09.2011


Ответы (1)


В -connection:didReceiveResponse: вы можете получить URL-адрес. Обратите внимание, что это может быть не тот URL-адрес, с которым вы создали соединение, поскольку соединение могло быть перенаправлено.

- (void)connection:(NSURLConnection *)connection 
            didReceiveResponse:(NSURLResponse *)response {
    NSURL * url = [response URL]; // The URL
}
person Cory Kilger    schedule 25.03.2010
comment
это нормально для отображения инициализации, но как узнать, какое соединение завершилось первым из - (void)connectionDidFinishLoading:(NSURLConnection *)connection - person illuminatus; 06.07.2011
comment
Я не уверен, что именно вы говорите, но похоже, что вы используете одного делегата для нескольких соединений. Я не рекомендую этого, поскольку вы часто будете устанавливать переменные экземпляра на основе ответов и данных, полученных в методах делегата. Вероятно, вам следует создать класс с единственной целью — быть делегатом и создавать новый экземпляр для каждого соединения. - person Cory Kilger; 14.07.2011