2012-03-29 9 views
1

次の方法を使用して、MeasurementSystemとの距離を調べています。いずれかが正しい方法を続行するかどうかを確認することができます。iPhoneのLocal MeasurementSystemを使用して距離を見つける

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

しかし、どちらかの作品:

- (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; 
} 

答えて

2

むしろこのためNSLocaleMeasurementSystemプロパティよりもNSLocaleUsesMetricSystemプロパティを使用して、もう少し自然なことです。この設定は多少不十分で、実際にはこれらが唯一の選択肢であり、変更する可能性は低いという明確な声明なしに、「メトリックではない場合はおそらくアメリカ語です」というヒントが多々あります。

+0

Rob最近、あなたの本を読んでいます。 (iOS 5のプログラミングは限界を押している)。 :-) – Lefteris

関連する問題