2013-10-10 1 views
-1

J'analyse les données HTML d'un site Web à l'aide de TFHppleElement. Maintenant, pendant l'analyse de la boucle for, je veux mettre à jour la vue de progression, mais cela ne fonctionne pas. Pourquoi?setProgress: animé: ne fonctionne pas (pendant l'analyse HTML)

Mon code:

ParseHTMLData.m

for (...) { 

     ... 
     for (...) { 

       for (...) { 

        ... 
       } 
     } 

      SecondViewController *svc = [[SecondViewController alloc] init]; 
      float prog = 0.9f; //For testing a fix value 
      [svc setProgressAnimated:[NSNumber numberWithFloat:prog]]; 

    } 

SecondViewController.m

-(void)setProgressAnimated: (NSNumber *)number; 
{ 
    [self.progressView setProgress:[number floatValue] animated:YES]; 
} 
+0

Est-ce que vous faites l'analyse dans un fil séparé? Pouvez-vous confirmer qu'il répond à l'appel de setProgressAnimated: et qu'il atteint la fonction. –

+0

Que voulez-vous dire par fil séparé? Comment puis je faire ça? Multithreading? – iCode

+1

Il se peut que Hpple analyse le code HTML dans une file NSOperationQueue distincte (c'est-à-dire pas sur le thread principal) dans la file d'attente principale, ce qui signifie que vous ne pouvez pas y effectuer de mises à jour. Vous devez donc exécuter votre méthode setProgress: sur [NSOperationQueue mainQueue] –

Répondre

0

Je l'ai eu de travail en procédant comme ça. Donc, il analyse en arrière-plan et je peux mettre à jour l'interface utilisateur.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     for (...) { 

     ... 
     for (...) { 

       for (...) { 

        ... 
       } 
     } 
    } 
}); 
Questions connexes