2009-07-27 7 views
7

W mojej aplikacji mam określoną odległość w metrach.Jak sprawdzić, czy użytkownik preferuje mile lub kilometry?

Chcę wyświetlać je w kilometrach, jeśli użytkownik woli kilometry i wyświetla je w milach, jeśli użytkownik preferuje mile. I w pierwszym przypadku chcę dodać ciąg "kilometry" na końcu, a w drugim dodać "mile".

Jaki jest najlepszy sposób na osiągnięcie tego celu?

Dzięki.

+0

Dlaczego nie ustawić preferencji użytkownika? – ceejayoz

+0

Przeczytaj ten [artykuł] (http://www.iphonesdkarticles.com/2008/11/localizing-iphone-apps-part-1.html) na temat ustawień regionalnych iPhone'a. == Aktualizacja == Ponieważ oryginalny link już nie działa, [tutaj jest wersja z pamięci podręcznej] (https://web.archive.org/web/20130126031830/http://www.iphonesdkarticles.com/2008/11/ localizing-iphone-apps-part-1.html). –

Odpowiedz

0

O ile iPhone nie dostarcza tych informacji bezpośrednio, musisz mieć tabelę odnośników z ustawień regionalnych do domyślnej jednostki. Następnie należy zezwolić użytkownikowi na zastąpienie tej wartości domyślnej.

+0

Zapewnia to bezpośrednio, zobacz moją odpowiedź :) – Chris

1

Użytkownik może zapytać użytkownika, czy preferuje mile lub kilometry, w preferencji lub coś podobnego. Wtedy, gdy wyświetlisz odległość, powiesz.

W pseudo kod C

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

Gdzie METERS_IN_A_MILE będzie około 1600, ale należy spojrzeć, że w górę.

+0

1609.344 metrów na milę –

14

Aby ustalić, czy użytkownik korzysta z metryki, czy nie, NSLocale może powiedzieć:

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

Swift odpowiednik odpowiedzi Chrisa byłoby coś takiego:

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

Zauważ, że domyślnie do true w pewnych okolicznościach. Zmień w razie potrzeby.

Powiązane problemy