2010-10-14 51 views
3

我已經構建了一個基本的Web XML到核心數據解析系統,但我很困惑如何一次性引發幾個解析器,並知道它們什麼時候全部完成。代表混淆。如何瞭解幾個代表完成任務時的情況?

這是我目前的設置,它只獲取一個解析的XML文件(「新聞」)。但我有幾個XML文件需要解析(「運動」,「商店」等)。如何將所有這些設置關閉,並知道它們何時完成?

// ViewController.m 

DataGrabber *dataGrabber = [[DataGrabber alloc] init]; 
dataGrabber.delegate = self; 
[dataGrabber getData:@"news"]; 


// DataGrabber delegate method (within ViewController) which gets called when dataGrabber has got all of the XML file 
- (void) dataGrabberFinished:(DataGrabber *)dataGrabber 
{ 
    NSManagedObjectContext *context = [self managedObjectContext]; 
    NSError *parseError = nil; 
    // Parser puts the xml into core data. Do I need delegate on this too? 
    Parser *xmlParse = [[Parser alloc] initWithContext:context]; 
    [xmlParse parseXMLFileWithData:dataGrabber.payload parseError:&parseError]; 
    [xmlParse release]; 
} 

(這是一個後續從這個問題 - Returning data from data-grabbing class from web?

回答

3

一種選擇是,算你創造了多少,然後讓每一個呼叫回計數從總的下來的方法。當它回到零時,它們全部完成。

您需要爲解析器設置委派,就像您爲下載器所做的那樣。