Проблема для iPhone сравнивая стоимость курса для Cllocation

StackOverflow https://stackoverflow.com/questions/2622314

Вопрос

Я пишу некоторый код для получения некоторых ценностей, включая курс

    -(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";}

И так далее, но я всегда извлекаю первое значение, «n».

Где моя ошибка?

Спасибо!

Это было полезно?

Решение

Вы можете изменить логическую или логично и (изменить || к &&) который будет гарантировать, что значение составляет от 0 до 90, или 90 и 180.

Из-за логика или, логика также кажется, что мне тоже немного ошибочно, возможно, есть что-то, что я не понимаю о предположениях, которые вы сделали - но если ценность, скажем, 200, он пройдет первый if Потому что 200 больше 0. Это также пройдет второй if Потому что 200 больше 90. Они проходят из-за логического или. Только одно из утверждений (> = 0 или <90) должно быть правдой для этого.

Это будет решено, используя логические и вместо этого.

Другие советы

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

короче:

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

Но на самом деле я думаю, что твое оружие не так. Вы идете на север, если курс 0 <= курс <45 или 315 <= курс <360.

@yonel.

Спасибо, курс в степени :-( Но я не понимаю ваших алговинов, чтение на Apple DOC Я нашел это:

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

Для меня это значит

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; - 

Мы говорим то же самое? : D.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top