Swift 2 到 Swift 3.0 运动管理器
Swift 2 to Swift 3.0 motionManager
我正在将应用程序从 swift 2 转换为 swift 3,并且我正在尝试使用 CMMotionManager,但是当我尝试调用 .startAccelerometerUpdates() 时出现此错误功能...虽然不知道出了什么问题。
这是我初始化管理器的方式:
let motionManager = CMMotionManager()
正在尝试调用函数:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: NSError?) in
self!.outputAccelerationData(data!.acceleration)
}
Error: Cannot convert value of type '(CMAccelerometerData?, NSError?)
-> ()' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')
谢谢!
神秘的错误消息归结为:在 Swift 3 中 NSError
被桥接到 Error
。像这样写你的代码,问题就会消失:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: Error?) in
Swift3 有很多变化。尤其是在表达上。许多 NS 类型的后缀被删除,例如 NSError
到错误,NSData
到数据。
因此,将 NSError
更改为 Error
。如果您想防止 CMMotionManager
的多个实例出现性能问题,请使用 SwiftyMotionManager.
我正在将应用程序从 swift 2 转换为 swift 3,并且我正在尝试使用 CMMotionManager,但是当我尝试调用 .startAccelerometerUpdates() 时出现此错误功能...虽然不知道出了什么问题。
这是我初始化管理器的方式:
let motionManager = CMMotionManager()
正在尝试调用函数:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: NSError?) in
self!.outputAccelerationData(data!.acceleration)
}
Error: Cannot convert value of type '(CMAccelerometerData?, NSError?) -> ()' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')
谢谢!
神秘的错误消息归结为:在 Swift 3 中 NSError
被桥接到 Error
。像这样写你的代码,问题就会消失:
motionManager.startAccelerometerUpdates(to: OperationQueue.main) { [weak self] (data: CMAccelerometerData?, error: Error?) in
Swift3 有很多变化。尤其是在表达上。许多 NS 类型的后缀被删除,例如 NSError
到错误,NSData
到数据。
因此,将 NSError
更改为 Error
。如果您想防止 CMMotionManager
的多个实例出现性能问题,请使用 SwiftyMotionManager.