在视图中,在控制器中加载,基本上是一个地图,我得到纬度和液化天然气。但它们是可选的,在把它们交给相机之前,我真的想确认一下它们不是零的。

 var lat = locationManager.location?.coordinate.latitude
 var lng = locationManager.location?.coordinate.longitude
 let cameraPosition = GMSCameraPosition.camera(withLatitude: lat!,
                                                          longitude: lng!, zoom: 1)

mapView = GMSMapview.map(withFrame: CGRect.zero, camera: cameraPosition)

这不是一个大问题,但如果我使用if-let语句或只是if语句来检查lat和lng是否为零,那么我最终遇到的问题是,我需要将let-cameraPosition行和mappview语句全部移到if语句中……这有点烦人。
有没有一个“最佳实践”的方式来处理lat液化天然气nils与谷歌地图。
谢谢。

最佳答案

使用guard语句安全地展开选项。这两个变量都是非可选的,并且可以在guard语句之后访问。

guard let lat = locationManager.location?.coordinate.latitude else {return}
guard let lng = locationManager.location?.coordinate.longitude else {return}
let cameraPosition = GMSCameraPosition.camera(withLatitude: lat, longitude: lng, zoom: 1)
mapView = GMSMapview.map(withFrame: CGRect.zero, camera: cameraPosition)

10-04 18:54