Frage

Ich bin einige Codes schreibe einige Werte für das Erhalten einschließlich Kurses

    -(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation   *)newLocation fromLocation:(CLLocation *)oldLocation {
    //somecode
    NSString *dirString = [[NSString alloc] initWithFormat:@"%d", newLocation.course];
    int myInt = [dirString intValue];
    if ((myInt >= 0) || (myint  < 90)) {course.text =@ "N";}
    if ((myInt >= 90) || (myint  < 180)) {course.text =@ "E";}

und so weiter, aber ich habe immer den ersten Wert abrufen, "N".

Wo ist mein Fehler?

Dankten!

War es hilfreich?

Lösung

Sie können die logische ändern möchten oder auf logische und (ändern || zu &&), die sicherstellen, dass der Wert zwischen 0 und 90 oder 90 und 180.

Aufgrund der logischen OR, die Logik scheint auch ein wenig zu mir fehlerhaft, vielleicht gibt es etwas, was ich nicht über die Annahmen zu verstehen, die Sie gemacht haben - aber wenn der Wert ist, sagen wir, 200, wird es passieren die erste if weil 200 ist größer als 0 Es wird dann auch den zweiten if passieren, weil 200 größer ist als 90. Sie wegen der logischen passieren OR. Nur eine der Aussagen (> = 0 oder <90) wahr zu sein für sie zu übergeben.

Das mit logischen gelöst werden würde und stattdessen.

Andere Tipps

Sie müssen nicht über NSString gehen, um den Kurs zu überprüfen, aber die Ursache für Ihre Fehler ist, dass der Kurs eine doppelt so hoch ist, Sie %f in der Formatierung von Zeichenfolge verwendet werden sollen.

kürzer:

double theCourse = newLocation.course;
if ((theCourse >= 0) || (theCourse  < 90)) {course.text =@ "N";}
if ((theCourse >= 90) || (theCourse  < 180)) {course.text =@ "E";}

Aber eigentlich denke ich, Ihre algo falsch ist. Sie sind in den Norden gehen, wenn der Kurs ist 0 <= Kurs <45 oder 315 <= Kurs <360.

@yonel

Dank der, natürlich in Grad ist :-( aber ich verstehe ich nicht Ihre algo, das Lesen auf Apple doc ich das gefunden habe:

Thus, north is 0 degrees, east is 90degrees, south is180 
degrees, and so on. Course values may not be available on all 
devices.

für mich diese Mittelwert

course between 0 and 44= North;
course between 45 and 89= NE; 
course between 90 and 134= East; 
course between 135 and 179= SouthEast;
course between 180 and 234= South;
course between 235 and 269= SouthWest;
course between 270 and 314= West;
course between 315 and 360 = NorthWest; - 

Sagen wir das Gleiche? : D

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top