首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在启动应用程序时尝试用Swift找到用户在Xcode中的位置,但是有可选的错误?

在启动应用程序时尝试用Swift找到用户在Xcode中的位置,但是有可选的错误?
EN

Stack Overflow用户
提问于 2015-02-27 16:33:37
回答 1查看 441关注 0票数 0

我试图让应用程序找到用户的位置,一旦应用程序已经启动。但是,当我尝试使用viewDidLoad方法并接收到以下错误时,我不断地在requestWhenInUseAuthorization方法中发现一个错误:

代码语言:javascript
复制
    fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

如果有人能帮我找到解决这个问题的办法,我将非常感激。谢谢!

代码语言:javascript
复制
class ViewController: UIViewController, MKMapViewDelegate, CLLocationManagerDelegate {

@IBOutlet weak var mapView: MKMapView!

var lastLocation = CLLocation()
var locationAuthorizationStatus:CLAuthorizationStatus!
var window: UIWindow?

let locationManager: CLLocationManager!

var seenError : Bool = false
var locationFixAchieved : Bool = false
var locationStatus : NSString = "Not Started"

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)


    self.initLocationManager()

}


override func viewDidLoad() {
    super.viewDidLoad()




    if (CLLocationManager.locationServicesEnabled()) {
        seenError = false
        locationFixAchieved = false

        locationManager = CLLocationManager()

        self.initLocationManager()

        locationManager.requestWhenInUseAuthorization()

        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.startUpdatingLocation()

    }



    mapView.showsUserLocation = true
    mapView.delegate = self
    self.mapView.setUserTrackingMode(MKUserTrackingMode.Follow, animated: true);

}

// Location Manager helper stuff
func initLocationManager() {


    locationManager.requestWhenInUseAuthorization()
}

// Location Manager Delegate stuff

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {
    locationManager.stopUpdatingLocation()
    if ((error) != nil) {
        if (seenError == false) {
            seenError = true
            print(error)
        }
    }
}



override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-27 17:02:23

在didAppear方法之前调用的是didload方法。因此,您的位置管理器尚未初始化。因此,您需要在使用它之前初始化它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28769848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档