2013-10-10 4 views
-1

Я анализирую HTML-данные с веб-сайта с помощью TFHppleElement. Теперь во время разбора в цикле for я хочу обновить progressView, но он не работает. Зачем?setProgress: анимированный: не работает (во время разбора HTML)

Мой код:

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

Вы занимаетесь разбором в отдельной теме? Можете ли вы подтвердить, что он нажимает вызов setProgressAnimated: и фактически достигает функции. –

+0

Что вы имеете в виду с отдельной веткой? Как я могу это сделать? Многопоточность? – iCode

+1

Возможно, что Hpple анализирует HTML в отдельном NSOperationQueue (т. Е. Не в основном потоке) в главной очереди, а это значит, что вы не можете делать обновления UI из него. Поэтому вы должны выполнить свой метод setProgress: [MainQueue NSOperationQueue] –

ответ

0

Я начала работать его, делая это так. Поэтому он анализируется в фоновом режиме, и я могу обновить интерфейс.

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

     ... 
     for (...) { 

       for (...) { 

        ... 
       } 
     } 
    } 
}); 
Смежные вопросы