Проблема для iPhone сравнивая стоимость курса для Cllocation
-
26-09-2019 - |
Вопрос
Я пишу некоторый код для получения некоторых ценностей, включая курс
-(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.