代表困惑.. 我如何知道几个代表何时完成了他们的任务?
Posted
技术标签:
【中文标题】代表困惑.. 我如何知道几个代表何时完成了他们的任务?【英文标题】:Delegate confusion .. How do I find out when several delegates have finished their task? 【发布时间】:2010-10-14 12:43:07 【问题描述】:我已经构建了一个基本的 Web XML 到 Core Data 解析系统,但我对如何同时启动多个解析器以及知道它们何时完成感到困惑。
这是我当前的设置,它只获取一个已解析的 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?)
【问题讨论】:
【参考方案1】:一种选择是计算您创建的数量,然后让每个人回调一个从该总数倒计时的方法。当它回到零时,它们都完成了。
您需要为解析器设置一个委托,就像为下载器所做的一样。
【讨论】:
以上是关于代表困惑.. 我如何知道几个代表何时完成了他们的任务?的主要内容,如果未能解决你的问题,请参考以下文章