Найти расстояние с помощью Local MeasurementSystem в iPhone - PullRequest
1 голос
/ 29 марта 2012

Я использую следующий метод, чтобы найти расстояние с MeasurementSystem.Может ли кто-нибудь подтвердить, правильно ли он поступил.

- (NSString *)textForDistance:(CLLocationDistance)meters {
    NSString *measureSystem = [[NSLocale currentLocale] objectForKey:NSLocaleMeasurementSystem];
    BOOL isMetric = ![measureSystem isEqualToString:@"U.S."];

    NSString *distanceString;

    if (!isMetric) {
        CGFloat feet = meters / METERS_PER_FOOT;
        if (feet * 2 > FEET_PER_MILE) {
            distanceString = [NSString stringWithFormat:@"%.1f miles", (feet / FEET_PER_MILE)];
        } else {
            distanceString = [NSString stringWithFormat:@"%.0f feet",feet];
        }
    } else {
        if (meters > 1000) {
            distanceString = [NSString stringWithFormat:@"%.1f km", (meters / 1000)];
        } else {
            distanceString = [NSString stringWithFormat:@"%.0f meters", meters];
        }
    }

    return distanceString;
}

1 Ответ

2 голосов
/ 29 марта 2012

Для этого немного более естественно использовать свойство NSLocaleUsesMetricSystem, а не NSLocaleMeasurementSystem:

BOOL isMetric = [[[NSLocale currentLocale] objectForKey:NSLocaleUsesMetricSystem] boolValue];

Но либо работает. Этот параметр несколько плохо определен, с большим количеством «ну, если это не показатель, это, вероятно, американский» намеки в документах без четкого заявления, что на самом деле это единственные варианты, и это вряд ли изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...