将Swift 1加速计代码更新到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
    }
}

结果错误是:

不能转换类型为'(CMAccelerometerData!, NSError!) -> ()' to预期参数类型'CMAccelerometerHandler'(又名'(可选,可选)-> ()')

我如何去修复这个错误,使我的代码与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
}
}

最新更新