【发布时间】:2015-02-12 20:25:50
【问题描述】:
我正在构建一个步骤管理器类,并在我的 .m 文件中添加了 CMPedometer 作为属性:
@interface WDStepTrackerManager ()
@property (nonatomic, strong) CMPedometer *pedometer;
@end
然后我在我的 init 方法中实例化它(我也尝试过惰性实例化——没有效果):
- (instancetype)init
{
self = [super init];
if (self) {
self.pedometer = [[CMPedometer alloc] init];
}
return self;
}
最后,我尝试像这样使用计步器:
- (void)stepsForTodayWithCompletion:(void(^)(int steps))completion
{
[self.pedometer queryPedometerDataFromDate:[[NSDate date] midnight] toDate:[NSDate date] withHandler:^(CMPedometerData *pedometerData, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
if (pedometerData) {
completion([pedometerData.numberOfSteps intValue]);
}
});
}];
}
然而,尽管我批准了对数据的访问,但每次我都会收到 103 错误,pedometerData 是 nil。 (如果你想知道NSDate 上的midnight 选择器,它来自我构建的一个类别,它有大量的单元测试并且可以正常工作,据我所知。)其他问题已经说过使CMPedometer 成为您的班级的财产应该阻止这种情况发生,但是尽管这样做了,我仍然收到错误。
我做错了什么?如何更改我的(非常简单的)代码以获取步骤?
【问题讨论】:
-
你用的是什么设备?
-
@SkylerLauren,一部 iPhone 6。