将 Swift 1 加速度计代码更新为 Swift 2 时出错
Error updating Swift 1 accelerometer code to Swift 2
我最近将 Xcode 更新到版本 7,其中还包括 Swift 2。
我的很多代码都有错误,我设法修复了大部分错误,除了一个。
let manager = CMMotionManager()
if manager.accelerometerAvailable
{
manager.accelerometerUpdateInterval = 0.5
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue())
{ // **Error on this line**
[weak self] (data: CMAccelerometerData!, error: NSError!) in
buffer = data.acceleration.y
}
}
产生的错误是:
Cannot convert value of type '(CMAccelerometerData!, NSError!) -> ()' to
expected argument type 'CMAccelerometerHandler' (aka
'(Optional, Optional) -> ()')
如何修复此错误,使我的代码适用于 swift 2?
你不需要声明块的类型
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] data, error in
buffer = data.acceleration.y
}
试试下面的代码。
let manager = CMMotionManager()
if manager.accelerometerAvailable
{
manager.accelerometerUpdateInterval = 0.5
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue())
{
data, error in
buffer = data.acceleration.y
}
}
我最近将 Xcode 更新到版本 7,其中还包括 Swift 2。 我的很多代码都有错误,我设法修复了大部分错误,除了一个。
let manager = CMMotionManager()
if manager.accelerometerAvailable
{
manager.accelerometerUpdateInterval = 0.5
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue())
{ // **Error on this line**
[weak self] (data: CMAccelerometerData!, error: NSError!) in
buffer = data.acceleration.y
}
}
产生的错误是:
Cannot convert value of type '(CMAccelerometerData!, NSError!) -> ()' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')
如何修复此错误,使我的代码适用于 swift 2?
你不需要声明块的类型
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {
[weak self] data, error in
buffer = data.acceleration.y
}
试试下面的代码。
let manager = CMMotionManager()
if manager.accelerometerAvailable
{
manager.accelerometerUpdateInterval = 0.5
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue())
{
data, error in
buffer = data.acceleration.y
}
}