我已经建立了一个基本的Web XML到Core Data解析系统,但是对于如何一次启动多个解析器并知道它们何时完成感到困惑。
这是我当前的设置,仅获取一个已解析的xml文件(“新闻”)。但是我有几个需要解析的xml文件(“sport”,“shop”等)。如何将所有这些关闭,并知道何时完成?
// 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?)
最佳答案
一种选择是计算创建的数量,然后每个调用一种从该总数倒数的方法。当其归零时,它们全部完成。
您将需要为解析器设置一个委托,就像您为下载器所做的一样。
关于iphone - 代表困惑..我如何找出几位代表何时完成任务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3933192/