2012-03-29 95 views
1

我正在使用以下方法查找与MeasurementSystem的距离。任何人都可以确认它是否正确进行。使用iPhone中的本地测量系统查找距离

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

这是一个有点更自然的使用NSLocaleUsesMetricSystem属性,而不是NSLocaleMeasurementSystem属性是:

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

但无论作品。这个设置的定义有些不明确,如果没有明确的声明,实际上这些是唯一的选择,并且这不太可能改变,那么很多“很好,如果它不是度量标准,它可能是美国的”在文档中提示。

+0

Rob我最近在看你的书。 (iOS 5编程推动极限)。 :-) – Lefteris 2012-03-29 15:02:15