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

标签 swift core-motion swift2

我正在尝试将以下代码转换为 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 !) -> 无效。您只需要重写您的调用以反射(reflect)这一点。

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

关于swift - startAccelerometerUpdatesToQueue 表达式类型在没有更多上下文的情况下不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30840911/

相关文章:

swift - 在 Swift 中添加 Storyboard

ios - 与 Apple Watch 共享来自 iOS 的 AsyncStorage React native 应用程序

arrays - Swift 为 InsertionSort 算法修改 Int 数组

iphone - 使用核心运动无法在后台获取正确的加速度计数据

ios - 获取当前的 iOS 设备方向,即使设备的方向已锁定

ios - 如何将框架中的 UIView 子类设置为 Storyboard自定义类?

swift - 更新 cellForRowAtIndexPath 中的单元格不起作用

ios - destinationVC 和成员类型的问题

ios - CMotionManager 在实例化时崩溃

ios - 从一个 ViewController 到另一个 ViewController 保存和删除 NSUserDefaults - Swift 2