我使用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