gpt4 book ai didi

ios - myLocationEnabled - 展开时意外发现 nil

转载 作者:行者123 更新时间:2023-11-30 13:43:42 24 4
gpt4 key购买 nike

我只是尝试使用 GoogleMaps API 获取 MapViewController 中的用户位置。我环顾四周,无法弄清楚为什么我不断收到 fatal error :在这个特定位置展开时意外发现 nil 和可选值。

这是我的代码:

class MapViewController: UIViewController {

let locationManager = CLLocationManager()
@IBOutlet weak var mapView: GMSMapView!

override func viewDidLoad() {
super.viewDidLoad()

locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()

let camera = GMSCameraPosition.cameraWithLatitude(-34.9290, longitude:138.6010, zoom:10)
let mapView = GMSMapView.mapWithFrame(CGRectZero, camera:camera)
mapView.mapType = kGMSTypeNormal
print("Calling addMarker")
// addMarker()
self.view = mapView
}

extension MapViewController: CLLocationManagerDelegate {
func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
if status == .AuthorizedWhenInUse {
locationManager.startUpdatingLocation()
mapView.myLocationEnabled = true
mapView.settings.myLocationButton = true
}
}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if let location = locations.first {
mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)
locationManager.stopUpdatingLocation()
}
}
}

这是我收到错误的地方:

!( http://imgur.com/qxxf0SV )

我知道 mapView.myLocationEnabled 返回 nil,但不明白为什么/如何。

最佳答案

很可能是mapView为零,而不是mapView.myLocationEnabled。当您遇到崩溃时,请尝试以下 lldb 命令:

po mapView

这会准确地告诉你。

didChangeAuthorizationStatus 委托(delegate)可能是在后台或在 View 完成之前调用的。您应该将这些扩展移至您的 AppDelegate 中。

关于ios - myLocationEnabled - 展开时意外发现 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35240934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com