【问题标题】:CMPedometer queryPedometerDataFromDate returns error 103CMPedometer queryPedometerDataFromDate 返回错误 103
【发布时间】:2015-02-14 14:19:38
【问题描述】:

我正在尝试对装有 iOS 8.1.2 的 iPhone 6 上的计步器缓存进行查询,我使用的是 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)
        }
    }

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

在这两种情况下,我都会接受告诉我接受跟踪身体活动的弹出窗口。 我仔细检查了该应用在匿名设置下是否具有对身体活动数据的读取权限。

谁能解释我做错了什么?

【问题讨论】:

    标签: ios objective-c swift core-motion


    【解决方案1】:

    您应该将 CMPedometer 变量作为类的属性,而不是作为局部变量。然后它就会起作用。

    【讨论】:

    • 嘿shadox,这是正确的答案。实际上我几天前就发现了,但是太兴奋了,所以忘了更新我的问题。不过谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多