Ios 可选类型的值';NSOperationQueue?&x27;未拆开
我正在编写一个核心运动Swift教程 但是,我得到一个错误: 未展开可选类型“NSOperationQueue”的值;你是说 使用“!”还是“?” 当我插入“!”时正如所建议的,我得到了另一个错误: 无法转换类型为“(cmAccelerMeterData!,n错误!)->Void”的值 到预期的参数类型“CMAccelerometerHandler”(aka“可选 ,可选)->()') 代码如下:Ios 可选类型的值';NSOperationQueue?&x27;未拆开,ios,swift,swift2,core-motion,Ios,Swift,Swift2,Core Motion,我正在编写一个核心运动Swift教程 但是,我得到一个错误: 未展开可选类型“NSOperationQueue”的值;你是说 使用“!”还是“?” 当我插入“!”时正如所建议的,我得到了另一个错误: 无法转换类型为“(cmAccelerMeterData!,n错误!)->Void”的值 到预期的参数类型“CMAccelerometerHandler”(aka“可选 ,可选)->()') 代码如下: motionManager.startAccelerometerUpdatesToQue
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue(),
withHandler: { (accelerometerData: CMAccelerometerData!, error: NSError!) -> Void in self.outputAccelerationData(accelerometerData.acceleration)
if (error != nil) {
print("\(error)")
}
})
motionManager.startGyroUpdatesToQueue(NSOperationQueue.currentQueue(), withHandler:
{ (gyroData: CMGyroData!, error: NSError!) -> Void in
self.outputRotationData(gyroData.rotationRate)
if (error != nil) {
print("\(error)")
}
})
我试图学习核心运动,这些错误让我困惑
我怎样才能解决这个问题呢?这与核心运动无关,这是糟糕的Swift代码。我建议你学习一下Swift。以下是一个很好的来源: 现在,关于你的代码:gyroData是可选的,所以不要把!在闭包中的参数前面,使用以下命令:
if let gData = gyroData {
...
}
比如说:
motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue(),
withHandler: { (accelerometerData, error) -> Void in self.outputAccelerationData(accelerometerData.acceleration)
if let x = accelerometerData {
// now x is your unwrapped accelerometerData
}
})
@IC12我想,如果你想要一个好的教程,看看这个或者看看他的书。我强烈推荐给任何熟悉另一种语言并且是Swift新手的人。谢谢!教程看起来很棒。我一定去看看。