我正在调用一个方法,该方法将枚举一个数组,创建一个 NSURL,并调用一个返回 JSON 的 NSURLSessionDataTask。循环通常运行大约 10 次,但可能会因日期而异。
在开始处理数据之前,我需要等待 for 循环和所有 NSURLSessionDataTasks 完成。
我很难确定所有工作何时完成。谁能推荐任何方法或逻辑来知道整个方法何时完成(用于循环和数据任务)?
-(void)findStationsByRoute{
for (NSString *stopID in self.allRoutes) {
NSString *urlString =[NSString stringWithFormat:@"http://truetime.csta.com/developer/api/v1/stopsbyroute?route=%@", stopID];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
if(httpResponse.statusCode == 200){
NSError *jsonError = [[NSError alloc]init];
NSDictionary *stopLocationDictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&jsonError];
NSArray *stopDirectionArray = [stopLocationDictionary objectForKey:@"direction"];
for (NSDictionary * _stopDictionary in stopDirectionArray) {
NSArray *stop = [_stopDictionary objectForKey:@"stop"];
[self.arrayOfStops addObject:stop];
}
}
}];
[task resume];
}
}