2010-09-11 24 views
1

Est-ce que quelqu'un sait comment supprimer de manière persistante les requêtes d'une ASINetworkQueue? La fonction de réinitialisation ne semble pas faire l'affaire. Ce que je suis en train de faire est leSupprimer toutes les demandes de ASINetWorkQueue

- (void)fillAndRunQueue:(ASINetworkQueue*)queue requests:(NSArray*)requests { 
    for (ASIHTTPRequest* request in requests) { 
     if ([request check]) { // Valid request => add it to the queue  
      [queue addOperation:request]; 
     } else { // Invalid request => cancel immediatelly 
      // HOW TO REMOVE ALL PREVIOUS REQUESTS FROM THE QUEUE?? 
      return; 
     } 
    } 

    [queue go]; 
} 

Répondre

2

suivant les deux options évidentes, je peux voir sont:

[queue cancelAllOperations]; 

ou si vous voulez plus de contrôle:

[request cancel]; 

pour chaque demande vous voulez "supprimer" (cela ne les supprime pas techniquement, mais peut avoir un effet assez proche pour vos besoins).

Bien que, je pense que [queue reset]; devrait également fonctionner - peut-être que vous pouvez expliquer exactement ce qui se passe lorsque vous essayez de l'utiliser?

Si tout le reste échoue, libérer puis recréer la file d'attente devrait tout supprimer.

Mise à jour

Pour expliquer plus loin, je ne pense pas qu'il est possible de supprimer effectivement les éléments d'un NSOperationQueue, pour les annuler. (ASINetworkQueue est une sous-classe de NSOperationQueue.)

Les docs de pomme sont ici:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html

+0

Tout d'abord, merci pour la réponse. Le problème avec [queue cancelAllOperations], [queue reset] et [request cancel] (pour chaque requête) est qu'ils laissent tous le nombre de requêtes dans la file d'attente inchangé. J'ai surveillé ce dernier avec [queue requestsCount] et il reste toujours le même. – hennes

+0

Pour être plus clair, ce que je veux est d'emtpy complètement la file d'attente. Bien sûr libérer et recréer la file d'attente serait une option pour cela, mais j'espérais qu'il y aurait une manière plus élégante. – hennes

+0

Une autre solution consiste à vérifier d'abord toutes les demandes, puis les ajouter à la file d'attente à la fois. Toutefois, la question d'origine (comment généralement supprimer des demandes d'une file d'attente) reste toujours. – hennes