2009-07-27 73 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。根據需要更改。

相關問題