2017-07-06 30 views
0

CMPedometerからステップを10日間収集しようとしています。 7日間は正常に動作しますが、過去3日間は0が返されます。ここで CMPedometerデータの7日以上

はコードです:
var days:[String] = [] 
var stepsTaken:[Int] = [] 
let activityManager = CMMotionActivityManager() 
let pedoMeter = CMPedometer() 

var cnt = 0 

override func viewDidLoad() { 
    super.viewDidLoad() 
    getDataForLast10Days() 
} 

func getDataForLast10Days() { 
    if(CMPedometer.isStepCountingAvailable()){ 
     let serialQueue : DispatchQueue = DispatchQueue(label: "com.example.MyQueue", attributes: .concurrent) 
     let formatter = DateFormatter() 
     formatter.dateFormat = "d MMM" 
     serialQueue.sync(execute: {() -> Void in 
      let today = NSDate() 
      for day in 1...10{ 
       let from = NSDate(timeIntervalSinceNow: Double(-7+day))) 
       let hour = Calendar.current.component(.hour, from: from as Date) 
       let min = Calendar.current.component(.minute, from: from as Date) 
       let sec = Calendar.current.component(.second, from: from as Date) 
       let timeToSub = (hour * 60 + min) * 60 + sec 
       let fromDate = NSDate(timeIntervalSinceNow: (Double(-10+day) * (86400)) - Double(timeToSub)) 
       let toDate = NSDate(timeIntervalSinceNow: (Double(-10+day+1) * (86400)) - Double(timeToSub)) 
       let dtStr = formatter.string(from: (toDate as Date)) 

       self.pedoMeter.queryPedometerData(from: fromDate as Date , to: toDate as Date) { (data : CMPedometerData!, error) -> Void in 
        //print("From Date: \(fromDate)","\n\n") 
        if(error == nil){ 
         // print(data,"\n\n") 
         print("\(dtStr) : \(data.numberOfSteps)") 
         self.days.append(dtStr) 
         self.stepsTaken.append(Int(data.numberOfSteps)) 
        } 
       } 
      } 
     }) 
    } 
} 

しかし、私はアプリを作成しているので、日の増加、1日の毎日のデータの増加に伴って

。私がアプリを作ってから2日が経ちました。それには9日間のデータがあります。これにどのように取り組んでいますか?

私に間違っていることを教えてください。

答えて

0

すべては問題ありません。

データの価値だけ過去7日間のインスタンスメソッドqueryPedometerData(from:to:withHandler:)

ためのメソッド定義によると、保存されます を取得するために利用可能です。 で7日以上の開始日を指定すると、過去のデータは利用可能なデータのみを返します。

See Apple's Documentation here.

関連する問題