关闭。 这个问题不能重现,或者是由错别字引起的。它当前不接受答案。
想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。
5年前关闭。
改善这个问题
我输入的是纬度和经度。我需要使用reverseGeocodeLocationswift 的功能,以便向我提供位置信息的输出。我尝试使用的代码是
reverseGeocodeLocation
println(geopoint.longitude) println(geopoint.latitude) var manager : CLLocationManager! var longitude :CLLocationDegrees = geopoint.longitude var latitude :CLLocationDegrees = geopoint.latitude var location: CLLocationCoordinate2D = CLLocationCoordinate2DMake(latitude, longitude) println(location) CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error) -> Void in println(manager.location) if error != nil { println("Reverse geocoder failed with error" + error.localizedDescription) return } if placemarks.count > 0 { let pm = placemarks[0] as CLPlacemark println(pm.locality) } else { println("Problem with the data received from geocoder") }
在我得到的日志中
//-122.0312186 //37.33233141 //C.CLLocationCoordinate2D //fatal error: unexpectedly found nil while unwrapping an Optional value
似乎该CLLocationCoordinate2DMake函数正在失败,然后导致该reverseGeocodeLocation函数中的致命错误。我是否在某处修改了格式?
CLLocationCoordinate2DMake
您永远不会对地理位置进行地理编码,而是传递manager.location。
看到: CLGeocoder().reverseGeocodeLocation(manager.location, ...
CLGeocoder().reverseGeocodeLocation(manager.location, ...
我认为这是一个复制粘贴错误,这就是问题所在-代码本身看起来不错-差不多;)
var longitude :CLLocationDegrees = -122.0312186 var latitude :CLLocationDegrees = 37.33233141 var location = CLLocation(latitude: latitude, longitude: longitude) //changed!!! println(location) CLGeocoder().reverseGeocodeLocation(location, completionHandler: {(placemarks, error) -> Void in println(location) guard error == nil else { println("Reverse geocoder failed with error" + error.localizedDescription) return } guard placemarks.count > 0 else { println("Problem with the data received from geocoder") return } let pm = placemarks[0] as! CLPlacemark println(pm.locality) })