Как (void) connectionDidFinishLoading ВЕРНУТЬ что-то? - PullRequest
1 голос
/ 06 октября 2009

У меня есть простой сценарий:

  • main.m (это мой основной класс)
  • myClass.m (который является дополнительным классом)

В моих планах должно произойти что-то вроде этого

(в MAIN.m)

myClass *foo = [[myClass alloc] init];
NSArray *array = [foo returnAnArray];

Что myClass делает, открывает новый NSURLConnection, извлекает некоторые данные и - когда он будет готов - анализирует их и возвращает массив.

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

(NSArray *) returnArray:(NSString *)dataDownloadedFromWeb

Чтобы узнать, когда данные фактически закончили загрузку и когда начинать их анализ, я использую

- (void) connectionDidFinishDownloading: (NSURLConnection *connection)

Но ГДЕ и КАК я могу вызвать returnArray: , если connectionDidFinishLoading является VOID? (

Надеюсь, это имеет смысл ... Я действительно застрял и не могу найти решение. Я попытался с NSNotification, но это, похоже, тоже не сработало.

Спасибо всем за поддержку! Enrico

Ответы [ 2 ]

1 голос
/ 06 октября 2009

Предположительно, вы имеете в виду - (void)connectionDidFinishLoading:(NSURLConnection *)connection?

В любом случае, вы не ждете, пока он не закончится - вы анализируете данные, когда они готовы - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

  • connectionDidFinishLoading: сообщает, что на вашем пути больше не будет данных.
0 голосов
/ 06 октября 2009

Вам нужно реализовать connectionDidFinishDownloading самостоятельно. Вам необходимо создать объект делегата, который вы передаете NSURLConnection при его создании. Объект делегата должен реализовывать connectionDidFinishDownloading.

NSURLConnection затем вызовет connectionDidFinishDownloading для вашего объекта делегата в подходящее время.

Более подробная информация здесь

...