startAccelerometerUpdatesToQueue 表达式类型在没有更多上下文的情况下不明确

startAccelerometerUpdatesToQueue Type of expression is ambiguous without more context

我正在尝试将以下代码翻译成 Swift 2.

manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { [weak self] (data: CMAccelerometerData!, error: NSError!) in              
    self!.outputAccData(data.acceleration)
}

但这给了我以下错误。

Type of expression is ambiguous without more context

有人知道为什么会这样吗?

这是可以通过从头重新键入代码来解决的问题之一。 startAccelerometerUpdatesToQueue() 的第二个参数现在似乎是 (CMAccelerometerData?, NSError?) -> Void 类型的对象,而不是 (CMAccelerometerData!, NSError!) -> Void。您只需要重写您的调用以反映这一点。

manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { [weak self] (data: CMAccelerometerData?, error: NSError?) in
    self!.outputAccData(data.acceleration)
}