2017-01-06 4 views
1

Я довольно новыми для Swift, поэтому я после учебник о том, как сделать приложение шагомер с этой страницы: http://shrikar.com/ios-swift-development-step-counter-app-using-pedometer-data/Невозможно преобразовать значение ошибки типа в Swift

Однако, это было из некоторое время назад , поэтому я работал над обновлением и не очень далеко. Я получаю эту ошибку:

Cannot convert value of type '(CMPedometerData?, NSError?) -> Void' to expected argument type 'CMPedometerHandler' (aka '(Optional<CMPedometerData>, Optional<Error>) ->()') 

Вот мой код до сих пор:

if(CMPedometer.isStepCountingAvailable()){ 
     let fromDate = NSDate(timeIntervalSinceNow: -86400 * 7) 
     self.pedoMeter.queryPedometerDataFromDate(fromDate as Date, toDate: NSDate() as Date) { (data : CMPedometerData?, error: NSError?) -> Void in 
      DispatchQueue.main.async(){ 
       if(error == nil){ 
        self.steps.text = "\(data.numberOfSteps)" 
       } 
      } 
     } 

     self.pedoMeter.startPedometerUpdatesFromDate(newDay) { (data: CMPedometerData?, error: NSError?) -> Void in 
      DispatchQueue.main.async(){ 
       if(error == nil){ 
        self.steps.text = "\(data.numberOfSteps)" 
       } 
      } 
     } 
    } 

Ошибка возникает в следующей строке:

{ (data : CMPedometerData?, error: NSError?) -> Void in 
      DispatchQueue.main.async(){ 

Любая помощь приветствуется.

+0

Учебное пособие устарело, и вы, вероятно, используете Swift 3 в своем проекте. NSError изменился на Error. Вероятно, вы также столкнетесь с другими проблемами из-за изменений в Swift, так как в дополнение к этому было опубликовано учебное пособие. – Gruntcakes

+0

Да, это все, спасибо за ответ. –

ответ

2

Ожидается Error? в то время как вы использовали NSError?. Попробуйте

(data : CMPedometerData?, error: Error?) -> Void 
+1

Ничего себе, просто как это. Огромное спасибо. –

Смежные вопросы