超过7天的CMPedometer数据
问题描述:
我试图从CMPedometer收集10天的步骤。它可以正常工作7天,但在过去三天内返回0。超过7天的CMPedometer数据
下面是代码:
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))
}
}
}
})
}
}
但随着天加重,因为我已经创建的应用程序,用于日常某一天的资料增加。距离我创建应用程序已经有2天了。它有9天的数据等等。我如何解决这个问题?
请让我知道什么是错的。
答
一切都很好。
根据该实例方法queryPedometerData(from:to:withHandler:)
只有过去七天的数据的方法定义存储,并为您提供 检索。在 中指定一个超过七天的开始日期,过去只返回可用数据。