将Swift 1加速度计代码更新为Swift 2时出错

时间:2015-09-28 20:04:02

标签: swift accelerometer swift2

我最近将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!) - > ()' 至   预期参数类型'CMAccelerometerHandler'(又名   '(可选,可选) - > ()')

如何修复此错误,以便我的代码与swift 2一起使用?

2 个答案:

答案 0 :(得分:2)

您不需要声明块的类型

manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) {  
    [weak self] data, error in
    buffer = data.acceleration.y
}

答案 1 :(得分:1)

请尝试以下代码。

let manager = CMMotionManager()

if manager.accelerometerAvailable 
{
manager.accelerometerUpdateInterval = 0.5
manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) 
{   
    data, error in
    buffer = data.acceleration.y
}
}