ASIHttpRequest резюме Загрузка

У меня есть вопрос, похожий на этот пост

Я собираюсь возобновить загрузку с помощью setTemporaryFileDownloadPath: но странно то, что когда я вызываю setDelegate для себя и запускаю соединение асинхронно, кеш не сохраняет его во временныйFileDownloadPath, а вместо этого я отмечаю установленный делегат, кеш сохраняет путь .

    _conn = [[ASIHTTPRequest alloc] initWithURL:_currentURL];
    [_conn setDownloadDestinationPath:_currentFileNameWithPath]; 
    [_conn setTemporaryFileDownloadPath:tempPdfLocation];     
    [_conn setAllowResumeForFileDownloads:YES];
    //[_conn setDelegate:self];
    [_conn startAsynchronous];

Я обнаружил, что всякий раз, когда - (void) request: (ASIHTTPRequest *) request didReceiveData: (NSData *) data: вызывается, кеш не сохраняется. Любая идея?


person Lunayo    schedule 20.06.2011    source источник


Ответы (1)


Я использовал то же самое. Разница лишь в том, что мне пришлось установить следующие селекторы:

[_conn setDidFailSelector:@selector(downloadDidFail:)];
[_conn setDidFinishSelector:@selector(downloadDidFinish:)];
[_conn setDidStartSelector:@selector(downloadDidStart:)];

И не реализовывать какие-либо другие методы делегата, указанные как необязательные в протоколе ASIHTTPRequestDelegate. Теперь загрузка работает отлично и при необходимости будет вызывать селекторы наборов.

person Jake    schedule 20.06.2011
comment
Но мне нужно отслеживать ход загрузки по байтам, поэтому мне нужна [длина данных] из запроса делегата didReceiveData:. - person Lunayo; 21.06.2011
comment
Если вы знаете общий размер (который вы можете), вы можете прикрепить пользовательский делегат прогресса, чтобы получать прогресс и вычислять его для загруженных байтов. - person Jake; 21.06.2011
comment
да, это сработало. Я использовал пользовательский делегат прогресса. Большое спасибо! - person Lunayo; 21.06.2011