2014-12-16 5 views
6

zurück Ich versuche eine Abfrage zum Schrittzähler-Cache auf einem iPhone 6 mit iOS 8.1.2, ich benutze objective-c, ich habe das CoreMotion-Framework importiert und es in das Projekt aufgenommen Code sieht wie folgt ausCMPedometer queryPedometerDataFromDate gibt Fehler 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); 
    } 
}]; 

Das gibt mir den Fehler: Fehler Domain = CMErrorDomain-Code = 103

Wenn ich genau das gleiche „Der Vorgang konnte nicht abgeschlossen werden (CMErrorDomain Fehler 103).“ Sache in Swift wie diese

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

Ich bekomme die Pedometerdaten und keine Fehler.

In beiden Fällen akzeptiere ich das Popup und sage mir, dass ich die physische Verfolgung verfolgen soll. Ich habe überprüft, dass die App unter Anonymitätseinstellungen Lesezugriff auf Daten zu physischen Aktivitäten hat.

Kann mir jemand erklären, was ich falsch mache?

Antwort

10

Sie sollten Ihre CMPedometer-Variablen als eine Eigenschaft Ihrer Klasse und nicht als lokale Variablen halten. Und dann wird es funktionieren.

+0

Hey Shadox, das ist die richtige Antwort. Ich habe es vor ein paar Tagen herausgefunden, war aber so aufgeregt, dass ich vergessen habe, meine Frage zu aktualisieren. Aber danke für die Antwort. – Thomas