恐怕我可能把完成处理程序都搞砸了。我想要做的是使用纬度和经度来获得时区。我希望整个函数返回 TimeZone 类型的值。以下代码有效,因为我可以获得正确的 timeZone 但它在返回阶段分崩离析。
func getTimeZone(location: CLLocationCoordinate2D, completion: () -> TimeZone) -> TimeZone {
var timeZone = TimeZone(identifier: "timeZone")
var placemark: CLPlacemark?
let cllLocation = CLLocation(latitude: location.latitude, longitude: location.longitude)
let geocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(cllLocation) { placemarks, error in
if let error = error {
print(error.localizedDescription)
} else {
if let placemarks = placemarks {
placemark = placemarks.first
}
}
DispatchQueue.main.async {
if let optTime = placemark?.timeZone {
timeZone = optTime
}
return completion()
}
}
}