CMPedometer queryPedometerDataFromDate返回错误103

我试图做一个查询计步器caching在iPhone的iOS 6与iOS 8.1.2,我使用Objective-C,我已经导入CoreMotion框架,并将其包含在项目中的代码看起来像这样

NSDate *startDate = [[NSDate date] dateByAddingTimeInterval:-60*60*12]; NSDate *endDate = [NSDate date]; CMPedometer *pedo = [[CMPedometer alloc]init]; [pedo queryPedometerDataFromDate:startDate toDate:endDate withHandler:^(CMPedometerData *pedometerData, NSError *error) { if (error) { NSLog(@"error: %@", error); } }]; 

这给了我错误:Error Domain = CMErrorDomain Code = 103“该操作无法完成。(CMErrorDomain错误103.)”

如果我这样做在Swift中完全一样的东西

 var dateString = "2014-12-15" var dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "YYYY-MM-DD" var startDate = dateFormatter.dateFromString(dateString) var endDate = NSDate() pedometer.queryPedometerDataFromDate(startDate, toDate: endDate){ (data, error) -> Void in if error != nil { println("There was an error requesting data from the pedometer: \(error)") } else { println(data) } } 

我得到的计步器数据,没有错误。

在这两种情况下,我接受popup窗口告诉我接受跟踪体力活动。 我有双重检查,该应用程序已经读取访问匿名设置下的身体活动数据。

任何人都可以解释我做错了什么?

你应该把你的CMPedometervariables作为你的类的一个属性,而不是局部variables。 然后它会工作。