【发布时间】:2018-09-24 10:33:25
【问题描述】:
我正在将MapKit 实现到我的应用程序中,我已经能够向用户显示当前位置。现在我正在尝试将当前街道名称和街道地址显示到我的故事板上的标签上,但我收到此错误::
无法转换“ViewController”类型的值?到这行代码中预期的参数类型“_OptionalNilComparisonType”
guard let self = self else { return }
下面是我的示例代码:
extension ViewController: MKMapViewDelegate {
func mapView(_ mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
let center = getCenterLocation(for: mapView)
let geoCoder = CLGeocoder()
guard let previousLocation = self.previousLocation else { return }
guard center.distance(from: previousLocation) > 50 else { return }
self.previousLocation = center
geoCoder.reverseGeocodeLocation(center) { [weak self] (placemarks, error) in
guard let self = self else { return }
if let _ = error {
//TODO show alert informing the user
return
}
guard let placemark = placemarks?.first else {
//TODO Show alert informing the user
return
}
let streetNumber = placemark.subThoroughfare ?? ""
let streetName = placemark.thoroughfare ?? ""
DispatchQueue.main.async {
self?.addressLabel.text = "\(streetNumber) \(streetName)"
}
}
}
}
【问题讨论】:
-
guard case self = self else { return }- 您希望从这个表达式中得到什么结果? -
对不起,我更新了我的问题