我最近更新了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
}
}