2016-07-14 61 views
0

它一直说不能转换(CMAccelerometerData!, NSError!)类型的值。我该如何改变它?不能转换类型(CMAccelerometerData !, NSError!)的值在

motionManager.startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler: { 
      (accelerometerData: CMAccelerometerData!, error: NSError!) in 
      // 3 
      let acceleration = accelerometerData.acceleration 
      // 4 
      self.xAcceleration = (CGFloat(acceleration.x) * 0.75) + (self.xAcceleration * 0.25) 
      }) 
+1

使用代码完成。重新键入该方法。或者在搜索字段中输入⇧⌘0(零)并粘贴'startAccelerometerUpdatesToQueue',然后点击'CMAccelerometerHandler'并比较签名。开发人员必须习惯于在文档中查找正确的方法签名。 – vadian

回答

0

它不应该是:

(CMAccelerometerData?, NSError?) -> Void 
        ^  ^
         not ! 

Reference

+0

我认为没有可空性注释的框架将其变量声明为force-unwrapped-optional。这可能就是其中之一。 – EmilioPelaez

2

让编译器推断类型在封闭:

CMMotionManager().startAccelerometerUpdatesToQueue(NSOperationQueue.currentQueue()!) { (accelerometerData, error) in 
    // 
} 
相关问题