Search code examples
swiftaccelerometerswift2

Error updating Swift 1 accelerometer code to Swift 2


I recently updated Xcode to version 7 which also includes Swift 2. A lot of my code had errors and I managed to fix most of them except for one.

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

The resulting error is:

Cannot convert value of type '(CMAccelerometerData!, NSError!) -> ()' to expected argument type 'CMAccelerometerHandler' (aka '(Optional, Optional) -> ()')

How do I go about fixing this error so my code works with swift 2?


Solution

  • Try the following code.

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