مشكلة 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";}
ولكن في الواقع أعتقد أن Algo خاطئ. أنت ذاهب إلى الشمال إذا كانت الدورة 0 <= الدورة <45 أو 315 <= الدورة <360.
yonel
شكرًا ، الدورة التدريبية في الدرجة :-( لكنني لا أفهم algo ، أقرأ على 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; -
هل نقول نفس الشيء؟ :د