gpt4 book ai didi

ios - 返回值时 iOS 中的线程问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:56:34 25 4
gpt4 key购买 nike

class ViewController: UIViewController, CLLocationManagerDelegate {

var locationManager = CLLocationManager()
var lat: Double! = 0.0
var long: Double! = 0.0

override func viewDidLoad() {
super.viewDidLoad()
self.findMyLocation()
print(self.lat)
print(self.long)
}

func findMyLocation() {
self.locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startMonitoringSignificantLocationChanges()

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()

// Here we start locating
locationManager.startUpdatingLocation()
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
for location in locations {
self.lat = location.coordinate.latitude
self.long = location.coordinate.longitude
}
locationManager.stopUpdatingLocation()
}
}

这是我的简单 View Controller ,用于获取我当前位置的纬度和经度并将其分配给局部变量 latlong 然后 print 它。上面的代码始终为 latlong 打印 0.0。这样做的原因是因为首先执行 print(lat) print(long),然后执行获取位置。我确信有一些非常简单的方法可以解决此问题,但我不确定如何执行此操作。任何帮助表示赞赏。我假设我们必须与 grand central dispatch 合作。请建议我应该看什么。

此外,我已将 NSLocationWhenInUseUsageDescription 添加到 info.plist

最佳答案

您只能在位置管理器找到一些坐标后打印坐标,即在函数 locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 中。
但是当位置管理器还没有坐标时,您尝试在 viewDidLoad 中打印它们。

关于ios - 返回值时 iOS 中的线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40200054/

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