gpt4 book ai didi

ios - 如何更改sendSynchronousRequest:urlRequest,因为已弃用

转载 作者:行者123 更新时间:2023-12-01 19:59:29 26 4
gpt4 key购买 nike

我是Objective-C的入门者,我有一种方法

- (void)getAltitudeFromElevationFromAlt:(float)latitude Long:(float)longitude{
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSString *apiKey = @"IzaSyA5CDPUYC7GY5PzJdu_K4ouRy55gm3R5BO4";
NSString *address = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/elevation/json?locations=%f,%f&key=%@", latitude, longitude, apiKey];
// Send a synchronous request

NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];
NSURLResponse * response = nil;
NSError * error = nil;
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];

NSString *str = @"No Data";
if (error == nil)
{
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
str = [NSString stringWithFormat:@"%@", dictionary[@"results"][0][@"elevation"]];
// NSLog(@"text = %@", dictionary[@"results"][0][@"elevation"]);
NSLog(@"str = %@", str);
dispatch_async( dispatch_get_main_queue(), ^{
_altitudeMeterLabel.text = str;
});
}
});
}

请帮助更改此顺序
NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
returningResponse:&response
error:&error];

最佳答案

使用NSURLSession异​​步请求:

- (void)getAltitudeFromElevationFromAlt:(float)latitude Long:(float)longitude {

NSString *apiKey = @"IzaSyA5CDPUYC7GY5PzJdu_K4ouRy55gm3R5BO4";
NSString *address = [NSString stringWithFormat:@"https://maps.googleapis.com/maps/api/elevation/json?locations=%f,%f&key=%@", latitude, longitude, apiKey];
// Send an ASYNCHRONOUS request

NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:address]];
[[[NSURLSession sharedSession] dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSString *str = @"No Data";
if (error) {
NSLog(@"%@", error);
} else {
NSError * jsonError = nil;
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
if (jsonError) {
NSLog(@"%@", jsonError);
} else {
str = [NSString stringWithFormat:@"%@", dictionary[@"results"][0][@"elevation"]];
// NSLog(@"text = %@", dictionary[@"results"][0][@"elevation"]);
NSLog(@"str = %@", str);
}
dispatch_async( dispatch_get_main_queue(), ^{
_altitudeMeterLabel.text = str;
});
}
}] resume];
}

注意:

由于数据任务始终被调度到后台线程,因此不需要全局 dispatch_async块。

关于ios - 如何更改sendSynchronousRequest:urlRequest,因为已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40605594/

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