将 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
}
}