我目前正在尝试将我的Swift iOS应用程序转换为Swift 2。我已经删除了99%的编译器错误,但这个错误仍然存在:
无法转换“”类型的值(cmaltitudedata!,nserrror!)->“作废”至
应为参数类型“cmaltitudehandler”(aka
'(可选,可选)->()')
这是对该功能的响应:

func startAltimeterUpdate() {
    self.altimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.currentQueue()!,
        withHandler: { (altdata:CMAltitudeData!, error:NSError!) -> Void in
            self.handleNewMeasure(pressureData: altdata)
    })
}

我很难理解这个错误…Xcode到底想告诉我什么?

最佳答案

您试图强制一个可选选项变为非可选。斯威夫特不喜欢那样。相反,请尝试以下操作:

func startAltimeterUpdate() {
    self.altimeter.startRelativeAltitudeUpdatesToQueue(NSOperationQueue.currentQueue()!,
        withHandler: { (altdata, error) -> Void in
            if let data = altdata {
                self.handleNewMeasure(pressureData: data)
            } else {
                // altdata is nil
            }
    })
}

07-26 09:38