Swift 为什么我的位置信息没有出现?

Swift 为什么我的位置信息没有出现?,swift,Swift,我正在制作一个显示经度、纬度、海拔和速度的应用程序 每当我运行应用程序时: 1.标签| 2中未显示位置数据。我收到以下错误消息: fatal error: unexpectedly found nil while unwrapping an Optional value 我做错了什么?谢谢 @IBOutlet weak var longitude: UILabel! @IBOutlet weak var latitude: UILabel! @IBOutlet weak var altitud

我正在制作一个显示经度、纬度、海拔和速度的应用程序

每当我运行应用程序时: 1.标签| 2中未显示位置数据。我收到以下错误消息:

fatal error: unexpectedly found nil while unwrapping an Optional value
我做错了什么?谢谢

@IBOutlet weak var longitude: UILabel!
@IBOutlet weak var latitude: UILabel!
@IBOutlet weak var altitude: UILabel!
@IBOutlet weak var speed: UILabel!

var locationManager: CLLocationManager = CLLocationManager()
var startLocation: CLLocation!

@IBAction func reset(sender: AnyObject) {
    startLocation = nil
}



func locationManager(manager: CLLocationManager!,
    didUpdateLocations locations: [AnyObject]!)
{
    var latestLocation: AnyObject = locations[locations.count - 1]

    latitude.text = String(format: "%.4f",
        latestLocation.coordinate.latitude)
    longitude.text = String(format: "%.4f",
        latestLocation.coordinate.longitude)
    altitude.text = String(format: "%.4f",
        latestLocation.altitude)


    if startLocation == nil {
        startLocation = latestLocation as! CLLocation
    }

    var distanceBetween: CLLocationDistance =
    latestLocation.distanceFromLocation(startLocation)

}

func locationManager(manager: CLLocationManager!,
    didFailWithError error: NSError!) {

}
然后

override func viewDidLoad() {
    super.viewDidLoad()


    // Location
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.delegate = self
    locationManager.requestWhenInUseAuthorization()
    locationManager.startUpdatingLocation()
    startLocation = nil


    // Do any additional setup after loading the view, typically from a nib.

}

清除
startLocation
作为隐式展开的可选项在这里是相当危险的,因为它并不打算总是这样零

尝试将其定义为可选:

var startLocation: CLLocation?
并相应地更改代码的resto,以便在需要时进行适当的检查

例如,计算距离时:

if let startLocation = startLocation {
       var distanceBetween: CLLocationDistance =
       latestLocation.distanceFromLocation(startLocation)
}
当代码可能为
nil


由于尝试设置纬度标签文本时会出现nil异常,因此首先我会检查该标签是否通过Interface Builder正确连接。声明左边的小子弹是彩色的吗?无论如何,您可以在代码行之前放置一个断点,然后检查哪些是零,哪些不应该。

tl;dr哪一行抛出错误?错误出现在latitude.text行。总的来说,没有结果。请帮助解决此问题@马特奥·皮翁博