我使用ASIHTTPRequest和NSOperationQueue从不同链接下载数据到如何知道nsoperation队列何时完成所有请求,以便我可以重新加载我的tableview?
在后台线程中下载。当请求结束时,我解析使用requestFinished
ASIHTTPRequest的委托方法。我想更新tableview中的数据,当
中的所有请求都已经完成。有什么办法可以知道NSOperationQueue何时处理了所有的
请求?我的意思是队列有像'isEmpty'或像'queueDidCompletedAllOperation'的任何委托方法的变量?
请大家帮忙。
下面是代码:
//source
@interface SourceModel : NSObject
@property (nonatomic, retain) NSString * link;
@property (nonatomic, retain) NSString * name;
@end
//for rssGroup
@interface CompleteRSSDataModel : NSObject
@property (nonatomic,strong) SourceModel * source;
@property (nonatomic,strong) KissXMLParser * parser;
@property (nonatomic,strong) NSArray * rssArticles;
@end
- (void)viewDidLoad
{
for (int index=0; index<[rssGroups count]; index++) {
NSString * urlString = [[[rssGroups objectAtIndex:index] source] link];
NSURL *url = [NSURL URLWithString:urlString];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDelegate:self];
//set this request's tag to group index of this source(link). See requestFinished for use of this :)
[request setTag:index];
[self.queue addOperation:request];
}
}
- (void)requestFinished:(ASIHTTPRequest *)request {
NSLog(@"%@",@"RSS Data got from internet successfully :))");
int groupIndex = [request tag];
CompleteRSSDataModel * group = [rssGroups objectAtIndex:groupIndex];
group.parser = [[KissXMLParser alloc]initWithData:[request responseData]];
if (group.parser == nil) {
NSLog(@"%@",@"Failed - Error in parsing data :((");
}
else {
NSLog(@"%@",@"Data Parsed successfully :))");
group.rssArticles = [group.parser itemsInRss];
//So i want to check here that queue is empty, reload data, but as my information, i don't know any method like hasCompletedAllRequested
//if(self.queue hasCompletedAllRequests) {
// [self.tableview reloadData];
//}
}
}
- (void)requestFailed:(ASIHTTPRequest *)request {
NSLog(@"%@",@"Error in Getting RSS Data from internet:((");
}
你可能会想分享你已经在这里尝试 - 即所遇到的研究,问题等的代码墙并没有真正的人想谁做任何事帮助。 – nil 2012-08-11 04:57:55
可能你是对的。我需要编辑这个问题。感谢您的建议 – iMemon 2012-08-11 05:12:06