2014-12-16 18 views
6

Próbuję wykonać zapytanie do pamięci podręcznej krokomierza na iPhone 6 z iOS 8.1.2, używam obiektywu c, zaimportowałem framework CoreMotion i zawarłem go w projekcie Kod wygląda następującoCMPedometer queryPedometerDataFromDate zwraca błąd 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); 
    } 
}]; 

To daje mi błąd: error Code CMErrorDomain Domain = = 103

Jeśli robię dokładnie to samo "operacja nie mogła zostać zakończona (błąd CMErrorDomain 103.)." rzecz w Swift w ten sposób

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

Otrzymuję dane krokomierza i brak błędów.

W obu przypadkach akceptuję okienko informujące o akceptowaniu śledzącej aktywności fizycznej. Dwa razy sprawdziłem, czy aplikacja ma dostęp do odczytu aktywności fizycznej w ustawieniach anonimowości.

Czy ktoś może wyjaśnić, co robię źle?

Odpowiedz

10

Powinieneś przechowywać zmienne CMPedometer jako własność klasy, a nie jako zmienne lokalne. A potem to zadziała.

+0

Hej Shadox, to jest poprawna odpowiedź. Rzeczywiście dowiedziałem się kilka dni temu, ale był tak bardzo podekscytowany, więc zapomniałem zaktualizować moje pytanie. Ale dziękuję za odpowiedź. – Thomas

Powiązane problemy