我目前正在尝试将我的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
}
})
}