请求位置时用户崩溃,用户什么都不做

时间:2017-03-04 00:55:51

标签: ios swift core-location

我有一个按钮,使用用户的位置搜索它们。如果他们尚未授予/拒绝使用其位置的权限,则会请求许可

相关代码:

func updateLocationStatus(){
    locationEnabled = CLLocationManager.locationServicesEnabled()
    appLocationEnabled = CLLocationManager.authorizationStatus()
}

@IBAction func searchNearby(sender: UIButton) {
    updateLocationStatus()
    if appLocationEnabled == CLAuthorizationStatus.Denied {
        //Show an alert to let them know they've denied location permissions
        presentViewController(alert, animated: true, completion: nil)
    }
    else if appLocationEnabled == CLAuthorizationStatus.NotDetermined || 
        appLocationEnabled != CLAuthorizationStatus.AuthorizedWhenInUse &&
        appLocationEnabled != CLAuthorizationStatus.AuthorizedAlways{
        locationManager.requestWhenInUseAuthorization()
    }
    else{
        activityIndicator.startAnimating()
        locationManager.requestLocation()
    }
}

正常使用时效果很好。但是,如果您让“允许应用程序使用您的位置[不允许] [允许]”警报在那里停留约5秒钟,则应用程序崩溃。该行跳转到Xcode导致错误

locationManager.requestWhenInUseAuthorization()

,提供的错误是

  

线程1:EXC_BAD_ACCESS(代码= 2,地址= 0xsomeaddress)

我甚至不知道从哪里开始解决这个问题,因为错误告诉我什么,功能完全正常,除非你什么都不做,

2 个答案:

答案 0 :(得分:1)

也许这会解决这个问题。确保在Info.plist中添加适当的键值组合。

有点像这样:

enter image description here

此外,您可能需要设置断点以确保已启用位置。

要开始查找位置,您还应配置位置管理器的desiredAccuracydistanceFilter属性,然后调用requestLocation()startUpdatingLocation()

答案 1 :(得分:1)

回溯是否提供任何有用的信息?在控制台中,您可以在Xcode中断时在提示符下键入bt。或者,您可以查看调试导航器。