2009-07-27 111 views
7

在我的应用程序中,我有一定的距离,以米为单位。如何知道用户是喜欢英里还是公里?

而且,如果用户偏好公里并以英里显示(如果用户偏好里程),我想以千米显示。在第一种情况下,我想在最后添加一个字符串“千米”,并在第二个字段中添加“英里数”。

实现此目标的最佳方法是什么?

谢谢。

+0

为什么不让它成为用户偏好? – ceejayoz 2009-07-27 17:24:19

+0

阅读关于iPhone语言环境的[文章](http://www.iphonesdkarticles.com/2008/11/localizing-iphone-apps-part-1.html)。 ==更新==原来的链接不再工作,[这里是缓存版本](https://web.archive.org/web/20130126031830/http://www.iphonesdkarticles.com/2008/11/本地化-iPhone应用程序 - 部分 - 1.HTML)。 – 2009-07-27 17:25:59

回答

0

除非iPhone直接提供这些信息,否则您必须有一个从区域设置到默认设备的查询表。那么你应该允许用户覆盖该默认值。

+0

它确实直接提供,请参阅我的回答:) – Chris 2012-09-11 05:22:35

1

您可以询问用户他们偏好英里还是公里,偏好或其他。然后,每当你显示一个距离,你会说。

在伪C代码

function distance(meters) { 
    if (userPrefersKM) { 
     return meters/1000 + " kilometers"; 
    else if (userPrefersMiles) { 
     return meters/METERS_IN_A_MILE + " miles"; 
} 

METERS_IN_A_MILE将是约1600年,但你应该看看这件事。

14

要确定用户是否使用公制或没有,NSLocale可以告诉你:

- (BOOL)isMetric { 
    return [[[NSLocale currentLocale] objectForKey:NSLocaleUsesMetricSystem] boolValue]; 
} 
1

斯威夫特相当于克里斯的回答会是这样的:

func isMetric() -> Bool { 
    return ((Locale.current as NSLocale).object(forKey: NSLocale.Key.usesMetricSystem) as? Bool) ?? true 
} 

注意它在某些情况下,默认为true。根据需要更改。

相关问题