gpt4 book ai didi

iphone - 我们如何在 iPhone Xcode 中处理多个 NSURLConnection?

转载 作者:行者123 更新时间:2023-12-03 19:09:11 25 4
gpt4 key购买 nike

我正在开发一个小应用程序,其中有多个 NSURLConnection。我已经创建了该 NSURL 连接,但我不知道如何处理它。我的代码如下所示。

-(void) loadTrafficAndEvent {    

int a=10;
//Get the map view bounds for fetch the travel time markers from web service
MKCoordinateRegion region = mapView.region;

float print = region.center.latitude;

// NSLog(@"region.center=%g",print);



CGPoint firstcorner = CGPointMake(self.mapView.bounds.origin.x , mapView.bounds.origin.y);
CGPoint secondcorner = CGPointMake((self.mapView.bounds.origin.x+mapView.bounds.size.width) , mapView.bounds.origin.y);
CGPoint thirdcorner = CGPointMake(self.mapView.bounds.origin.x , (mapView.bounds.origin.y+ mapView.bounds.size.height));
CGPoint fourthcorner = CGPointMake((self.mapView.bounds.origin.x+mapView.bounds.size.width), (mapView.bounds.origin.y + mapView.bounds.size.height));;


//Then transform those point into lat,lng values
CLLocationCoordinate2D mapfirstcorner,mapsecondcorner,mapthirdcorner,mapfourthcorner,requestsender;

mapfirstcorner = [mapView convertPoint:firstcorner toCoordinateFromView:mapView];
mapsecondcorner = [mapView convertPoint:secondcorner toCoordinateFromView:mapView];
mapthirdcorner = [mapView convertPoint:thirdcorner toCoordinateFromView:mapView];
mapfourthcorner = [mapView convertPoint:fourthcorner toCoordinateFromView:mapView];

NSDateFormatter *dateFormatter;
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yyyy"];
NSString *date = [dateFormatter stringFromDate:[NSDate date]];
[dateFormatter release];

NSString *checksumString = [NSString stringWithFormat:@"TrafficAndEvents%@ForTravelStar", date];

NSString *md5Checksum = [self getMD5CheckSum:checksumString];

NSString *url = [NSString stringWithFormat:@"http://www.travelstar.nl/travelstarwebservice/ProviderServices.asmx/GetTrafficStatusAndEvent?northWestLatitude=%f&northWestLongitude=%f&southEastLatitude=%f&southEastLongitude=%f&zoomLevel=%d&date=%@&checksum=%@", mapfirstcorner.latitude,mapfirstcorner.longitude, self.mapView.region.center.latitude, self.mapView.region.center.longitude, a,date,md5Checksum];

NSString *url1 = [NSString stringWithFormat:@"http://www.travelstar.nl/travelstarwebservice/ProviderServices.asmx/GetTrafficStatusAndEvent?northWestLatitude=%f&northWestLongitude=%f&southEastLatitude=%f&southEastLongitude=%f&zoomLevel=%d&date=%@&checksum=%@", mapsecondcorner.latitude,mapsecondcorner.longitude, self.mapView.region.center.latitude, self.mapView.region.center.longitude, a,date,md5Checksum];

NSString *url2 = [NSString stringWithFormat:@"http://www.travelstar.nl/travelstarwebservice/ProviderServices.asmx/GetTrafficStatusAndEvent?northWestLatitude=%f&northWestLongitude=%f&southEastLatitude=%f&southEastLongitude=%f&zoomLevel=%d&date=%@&checksum=%@", mapthirdcorner.latitude,mapthirdcorner.longitude, self.mapView.region.center.latitude, self.mapView.region.center.longitude, a,date,md5Checksum];

NSString *url3 = [NSString stringWithFormat:@"http://www.travelstar.nl/travelstarwebservice/ProviderServices.asmx/GetTrafficStatusAndEvent?northWestLatitude=%f&northWestLongitude=%f&southEastLatitude=%f&southEastLongitude=%f&zoomLevel=%d&date=%@&checksum=%@", mapfourthcorner.latitude,mapfourthcorner.longitude, self.mapView.region.center.latitude, self.mapView.region.center.longitude, a,date,md5Checksum];

//Release the request if it is already created.
if(request1 ) {
[request release];
request = nil;
}
else if(request1 ) {
[request1 release];
request1 = nil;
}
else if(request2 ) {
[request2 release];
request2 = nil;
}
else if(request3 ) {
[request3 release];
request3 = nil;
}

//Release the connection if it is already created.
if(conn) {
[conn cancel];
[conn release];
conn = nil;
}
else if(conn1) {
[conn1 cancel];
[conn1 release];
conn1 = nil;
}
else if(conn2) {
[conn2 cancel];
[conn2 release];
conn2 = nil;
}
else if(conn3) {
[conn3 cancel];
[conn3 release];
conn3 = nil;
}

//If zoom level is grater then 6 then it will request for fetch the travel time markers from the web servce.
if(a > 6) {

ZOOM_LEVEL = a;
//Create the request for fetch the data from web service.
request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
request1 = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url1]];
request2 = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url2]];
request3 = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url3]];

//NSLog(@"%@",url);
//NSLog(@"Request sent");
//entryDate = [NSDate date];
//[entryDate retain];

//Create the connection with the web service for fetch the data
// DownloadDelegate *dd = [[DownloadDelegate alloc] init];


conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
conn1 = [[NSURLConnection alloc] initWithRequest:request1 delegate:self];
conn2 = [[NSURLConnection alloc] initWithRequest:request2 delegate:self];
conn3 = [[NSURLConnection alloc] initWithRequest:request3 delegate:self];
}
}

最佳答案

在.h文件中声明conn,conn1,conn2,conn3。然后执行以下操作。在loadTrafficAndEvent中:

conn1 = [[NSURLConnection alloc] initWithRequest:request1 delegate:self];

在connectionDidFinishDownloading:方法中,

- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL{
if(connection==conn){
conn1 = [[NSURLConnection alloc] initWithRequest:request1 delegate:self];
}
else if(connection==conn1){
conn2 = [[NSURLConnection alloc] initWithRequest:request2 delegate:self];
}
else if(connection==conn2){
conn3 = [[NSURLConnection alloc] initWithRequest:request3 delegate:self];
}

}

在每个if else条件内进行操作,无需在loadTrafficAndEvent中分配和初始化所有NSURLConnection:下载将依次进行。

关于iphone - 我们如何在 iPhone Xcode 中处理多个 NSURLConnection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com