Проблема с iPhone при сравнении стоимости курса для определения местоположения - PullRequest
0 голосов
/ 12 апреля 2010

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

    -(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".

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

Спасибо'S!

Ответы [ 3 ]

3 голосов
/ 12 апреля 2010

Вы можете захотеть изменить логическое ИЛИ на логическое и (изменить || на &&), что обеспечит значение в диапазоне от 0 до 90 или от 90 до 180.

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

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

1 голос
/ 12 апреля 2010

Вам не нужно проходить через 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. </p>

0 голосов
/ 12 апреля 2010

@ 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

...