2015-09-28 5 views
3

Недавно я обновил Xcode до версии 7, который также включает Swift 2. В моем коде были ошибки, и мне удалось исправить большинство из них, кроме одного.Ошибка при обновлении кода акселерометра Swift 1 до 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' (ака «(Необязательно , Опционально) ->() ')

Как исправить эту ошибку, чтобы мой код работал с быстрым 2?

ответ

1

Попробуйте следующий код.

let manager = CMMotionManager() 

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

Вам не нужно объявлять тип блока

manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { 
    [weak self] data, error in 
    buffer = data.acceleration.y 
} 
Смежные вопросы