Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 可选类型的值';NSOperationQueue?&x27;未拆开_Ios_Swift_Swift2_Core Motion - Fatal编程技术网

Ios 可选类型的值';NSOperationQueue?&x27;未拆开

Ios 可选类型的值';NSOperationQueue?&x27;未拆开,ios,swift,swift2,core-motion,Ios,Swift,Swift2,Core Motion,我正在编写一个核心运动Swift教程 但是,我得到一个错误: 未展开可选类型“NSOperationQueue”的值;你是说 使用“!”还是“?” 当我插入“!”时正如所建议的,我得到了另一个错误: 无法转换类型为“(cmAccelerMeterData!,n错误!)->Void”的值 到预期的参数类型“CMAccelerometerHandler”(aka“可选 ,可选)->()') 代码如下: motionManager.startAccelerometerUpdatesToQue

我正在编写一个核心运动Swift教程

但是,我得到一个错误:

未展开可选类型“NSOperationQueue”的值;你是说 使用“!”还是“?”

当我插入“!”时正如所建议的,我得到了另一个错误:

无法转换类型为“(cmAccelerMeterData!,n错误!)->Void”的值 到预期的参数类型“CMAccelerometerHandler”(aka“可选 ,可选)->()')

代码如下:

     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新手的人。谢谢!教程看起来很棒。我一定去看看。