2010-04-12 3 views
0

위해 나는 물론 등등아이폰 문제 비교 물론 값은 cllocation

-(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 [email protected] "N";} 
    if ((myInt >= 90) || (myint < 180)) {course.text [email protected] "E";} 

등 일부 값을 얻기위한 몇 가지 코드를 쓰고 있어요,하지만 난 항상 첫 번째 값, "N"을 검색 할 수 있습니다.

내 실수는 어디까지입니까?

감사합니다.

답변

3

참고 값 때문에 0, 90, 90 및 180

사이에 확인되는 논리 OR 논리하고 (변경 ||&& 행)을 변경할 수 논리 OR 논리 또한 나에게 약간의 결함이있는 것 같습니다. 아마 당신이 만든 가정에 대해 이해하지 못하는 것이있을 수 있습니다.하지만 값이 200이라고하면 200이 0보다 크기 때문에 if이 먼저 전달됩니다. 두 번째 if도 전달합니다. 왜냐하면 200이 90보다 커지기 때문입니다. 논리 OR 때문에 통과합니다. 명령문 (> = 0 또는 < 90) 중 하나만이 참이어야합니다.

이것은 논리 AND를 대신 사용하여 해결할 수 있습니다.

+0

감사의 jasarien, shure,이 실수를 이해했습니다 – zebra

1

코스를 확인하기 위해 NSString을 사용할 필요는 없지만 버그의 근본 원인은 코스가 두 배로되어 있기 때문에 문자열을 형성하는 데 %f을 사용해야합니다.

짧은 :

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

을하지만 실제로 나는 당신 너 한테 잘못 생각합니다. 코스가 0이라면 북쪽으로갑니다 < = 코스 < 45 또는 315 < = 코스 < 360입니다.

+0

안녕하세요, 다른 방법으로 시도하고 있습니다. NSString * courseString = [[NSString alloc] initWithFormat : @ "% 3.0f", newLocation.course]; course.text = courseString; 시뮬레이터에서 나는 courseString에 값을 할당하려고 노력했습니다. 내 장치에서 앱의 크래시가 발생하고 모바일 크래시 보고서 만 표시됩니다 (usefoul은 표시되지 않습니다). 아이디어가 있으십니까? 내가 더블을 할 때마다 일어난 일입니다. – zebra

+0

문자열의 점 뒤에 3 자리 숫자를 표시하려면 "% .3f" – yonel

0

@yonel

감사의, 과정은 :-(정도에 있지만 나는이 발견 한 사과 문서를 읽고, 귀하의 너 한테 이해하지 못했습니다 날이 평균에 대한

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