Swift 2到Swift 3.0 motionManager [英] Swift 2 to Swift 3.0 motionManager
问题描述
我正在将应用程序从swift 2转换为swift 3并且我正在尝试使用CMMotionManager,但是当我尝试调用.startAccelerometerUpdates()函数时它给了我这个错误...但不知道有什么问题。
I am converting an app from swift 2 to swift 3 and I'm trying to use the CMMotionManager, but it gives me this error when I try to call the .startAccelerometerUpdates() function... No clue what's wrong though.
这是我初始化经理的方式:
This is how I initialize the manager:
让motionManager = CMMotionManager()
试图调用该函数:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: NSError?) in
self!.outputAccelerationData(data!.acceleration)
}
错误:无法转换类型'的值(CMAccelerometerData?,NSError?)
- >()'到预期的参数类型'CMAccelerometerHandler'(又名'(可选,可选) - >()')
Error: Cannot convert value of type '(CMAccelerometerData?, NSError?) -> ()' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')
谢谢!
推荐答案
这个神秘的错误消息归结为此:在Swift 3中 NSError
将桥接到错误
。编写这样的代码,问题应该消失:
The cryptic error message boils down to this: in Swift 3 NSError
is bridged to Error
instead. Write your code like this and the problem should go away:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: Error?) in
这篇关于Swift 2到Swift 3.0 motionManager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!