2014-12-16 2 views
6

Я пытаюсь выполнить запрос к кешу шагомера на iPhone 6 с iOS 8.1.2, я использую объектно-c, я импортировал каркас CoreMotion и включил его в проект. код выглядит следующим образомCMPedometer queryPedometerDataFromDate возвращает ошибку 103

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) 
     } 
    } 

Я получаю данные шагомера и никаких ошибок.

В обоих случаях я принимаю всплывающее окно, сообщающее мне принять отслеживающую физическую активность. Я дважды проверил, что приложение имеет доступ для чтения к данным физической активности в настройках анонимности.

Может ли кто-нибудь объяснить, что я делаю неправильно?

ответ

10

Вы должны хранить переменные CMPedometer в качестве свойства вашего класса, а не как локальные переменные. И тогда это сработает.

+0

Эй, shadox, это правильный ответ. Я на самом деле узнал пару дней назад, но так ушел, что забыл обновить свой вопрос. Но спасибо за ответ. – Thomas

Смежные вопросы