Search code examples
swiftcocoa-touchswift2core-motion

CMPedometer getting error in Swift 2.0


I cannot invoke start pedometer updates from date with an argument list of type.

It was working in Swift 1.2, but now since I migrated to Swift 2, it is getting an error.

 if(CMPedometer.isStepCountingAvailable()){
        self.manager.deviceMotionUpdateInterval = 0.1
        self.coremotion.startPedometerUpdatesFromDate(NSDate()) {
          (data: CMPedometerData!, error) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if(error == nil){
                    println(data.numberOfSteps)
                    self.pedoLabel.text = "\(data.numberOfSteps)"
                    self.label.text = ("Great you have \(data.numberOfSteps) steps")
                }
            })   
        }
    }

Solution

  • Use Optional: (data: CMPedometerData?, error)

    if(CMPedometer.isStepCountingAvailable()){
        self.manager.deviceMotionUpdateInterval = 0.1
        self.coremotion.startPedometerUpdatesFromDate(NSDate()) {
          (data: CMPedometerData?, error) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if(error == nil){
                    println(data.numberOfSteps)
                    self.pedoLabel.text = "\(data.numberOfSteps)"
                    self.label.text = ("Great you have \(data.numberOfSteps) steps")
                }
            })   
        }
    }