【发布时间】:2020-05-19 19:32:22
【问题描述】:
我正在尝试使用 CoreLocation 查找两个城市之间的距离,但由于某种原因,在初始化两个 CLLocationCoordinate2D 变量后出现错误。我必须事先初始化它们,因为它们处于闭包中。
这是我的代码:
let geoC = CLGeocoder()
func distance(_ cityA: String, _ cityB: String) -> Double{
var coordinatesA = CLLocationCoordinate2DMake(0.0, 0.0)
var coordinatesB = CLLocationCoordinate2DMake(0.0, 0.0)
print("check")
geoC.geocodeAddressString(cityA, completionHandler: {
(placemarks, errorA) -> Void in
if (errorA) != nil{
print("Error", errorA!)
}
if let placemarkA = placemarks?.first{
coordinatesA = placemarkA.location!.coordinate
}
})
geoC.geocodeAddressString(cityA, completionHandler: {
(placemarks, errorB) -> Void in
if (errorB) != nil{
print("Error", errorB!)
}
if let placemarkB = placemarks?.first{
coordinatesB = placemarkB.location!.coordinate
}
})
let coordinateA = CLLocation(latitude: coordinatesA.latitude, longitude: coordinatesA.longitude)
let coordinateB = CLLocation(latitude: coordinatesB.latitude, longitude: coordinatesB.longitude)
return coordinateA.distance(from:coordinateB)
}
我得到的错误是:libc++abi.dylib: 以 NSException 类型的未捕获异常终止。
我正在使用 XCode Playground。
【问题讨论】:
-
geocodeAddressString 是异步的。您的代码没有考虑到这一点。
标签: swift xcode core-location