2016-07-20 1 views
-1

Je suis nouveau à NSURLSession et je n'ai pas trouvé la réponse dans l'autre question de stackoverflow. Donc je poste ceci. J'ai un Button et ProgressBar dans mon ViewController. En utilisant l'exemple de » NSURLSessionDownloadTask, je fais appel resume comme suitEst-ce que le fichier NSURLSessionDownloadTask peut être appelé deux fois?

@property (nonatomic, strong) NSURLSessionDownloadTask *downloadTask; 

indiquée ci-dessus ligne @interface

NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; 
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:[NSOperationQueue mainQueue]]; 
self.downloadTask = [session downloadTaskWithURL:url]; 

spécifié ci-dessus des lignes dans @implementation et appelé méthode resume sur ButtonClick comme suit

-(void) buttonpressed:(id)sender{ 
    [self.downloadTask resume]; 
} 

Voici ce qui se passe est,

Lorsque je clique sur le bouton pour la première fois, il télécharge parfaitement

(ie. Appeler les méthodes de délégué appropriées downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite & didFinishDownloadingToURL

Mais quand je clique à nouveau sur le bouton, ce n'est pas le téléchargement (ie. Les méthodes Déléguer ne demandent pas)

1) Où je fais erreur?

2) Je veux le télécharger à nouveau si je clique sur le bouton deuxième fois. Qu'est-ce que devrais-je faire pour cela?

Toute aide appréciée, merci pour le temps (:.

+1

où appelez-vous downloadTaskWithURL? –

Répondre

1

resume est uniquement pour des tâches suspendues, et le vôtre est terminé Le correctif simple est de créer et de commencer (vraiment, CV) la tâche dans le même fonction.

- (void)setupAndStartDownload { 
    // your setup code, from the OP 
    // then start it here 
    [self.downloadTask resume]; 
} 

-(void) buttonpressed:(id)sender{ 
    [self setupAndStartDownload]; 
} 
+0

Je ne sais pas comment il sera créé si nous appelons cela en fonction distincte. Je veux dire, les deux sont même droit? Je ne sais pas – Ganesh

+0

Je comprends votre commentaire. Je Je suggère que vous créez et reprenez la session dans la même fonction tion. Appelez cette fonction la première fois, puis de nouveau via le code du bouton. – danh

+0

Désolé, je ne comprends pas. Ce que je veux, c'est quand je clique sur le bouton, il devrait re-télécharger ce qui n'arrivera pas même si je spécifie une fonction dans l'action du bouton – Ganesh