防止 lat 和 lng 在地图初始化时返回 nil 的最佳方法 swift
Best way to protect from lat and lng returning nil on map initialisation swift
在基本上是地图的控制器中的 viewDidLoad 中,我得到了纬度和经度。但它们是可选的,在将它们传递给相机之前,我真的很想检查它们是否为零。
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 是否为 nil,我最终遇到的问题是我需要移动 let cameraPosition 行和 mapView 语句全部进入 if 语句...这有点烦人。
有没有 "best practice" 方法用 google 地图处理 lat lng 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)
在基本上是地图的控制器中的 viewDidLoad 中,我得到了纬度和经度。但它们是可选的,在将它们传递给相机之前,我真的很想检查它们是否为零。
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 是否为 nil,我最终遇到的问题是我需要移动 let cameraPosition 行和 mapView 语句全部进入 if 语句...这有点烦人。
有没有 "best practice" 方法用 google 地图处理 lat lng 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)