2016-08-02 60 views
0

我下面就做一个简单的计步器应用一个tutorial,而我收到以下错误无法转换值类型的错误,斯威夫特

无法将类型的价值“(CMPedometerData!_) - >空”到 预期参数类型 'CMPedometerHandler'(又名 '(可选,可选) - >()')

上这些行的代码:

if(CMPedometer.isStepCountingAvailable()){ 
        let fromDate = NSDate(timeIntervalSinceNow: -86400 * 7) 
        self.pedoMeter.queryPedometerDataFromDate(fromDate, toDate: NSDate()) { (data : CMPedometerData!, error) -> Void in 
         print(data) 
         dispatch_async(dispatch_get_main_queue(), {() -> Void in 
          if(error == nil){ 
           self.steps.text = "\(data.numberOfSteps)" 
          } 
         }) 
        } 
        self.pedoMeter.startPedometerUpdatesFromDate(midnightOfToday) { (data: CMPedometerData!, error) -> Void in 
         dispatch_async(dispatch_get_main_queue(), {() -> Void in 
          if(error == nil){ 
           self.steps.text = "\(data.numberOfSteps)" 
          } 
         }) 
        } 
       } 

回答

5

编译器告诉你,你提供的处理程序类型错误 - 你有第一个参数作为隐式解开的可选而不是可选的(它有!而不是?),第二个参数有没有类型。换句话说,该位是这个样子:

(data : CMPedometerData!, error) -> Void 

...应该是这样的,而不是:

(data : CMPedometerData?, error: NSError?) -> Void 
相关问题