2010-02-22 3 views
6

Ich arbeite derzeit an einer kartenbasierten iPhone-Anwendung und möchte dem Benutzer einige Informationen anzeigen. Für meine Anwendung ist es sinnvoll, eine Einstellung zu haben, bei der der Benutzer Meilen oder Kilometer wählen kann. Gibt es einen eingebauten Mechanismus (vielleicht ähnlich der String-Lokalisierung) für diese Art der Wertumschaltung, so dass ich einen if-Block um jedes Mal vermeiden kann, wenn ich dem Benutzer etwas anzeigen möchte?Gibt es einen eingebauten Mechanismus für die Austauschbarkeit von Meilen/KM für das iPhone?

Antwort

12

Werfen Sie einen Blick auf NSLocale. Sie sollten das aktuelle Gebietsschema mithilfe von [NSLocale currentLocale] abrufen können. Rufen Sie dann [theLocale objectForKey: NSLocaleMeasurementSystem] auf und sehen Sie sich die Ergebnisse an, die Ihnen sagen sollen, ob das Gebietsschema des Benutzers das metrische System verwendet. Die Dokumentation für NSLocale enthält einen Konstantenabschnitt, der alle Werte auflistet, die an das Gebietsschema übergeben werden können.

Mit dieser Funktion würden Sie Ihre eigene Funktion erstellen, die in Ihrem Programm verwendet werden kann, um Ihre Entfernung in einer länderspezifischen Weise zurückzugeben.

+3

Wenn Sie einen einfachen booleschen Wert wünschen, können Sie auch den NSLocaleUsesMetricSystem-Schlüssel überprüfen, der einen booleschen NSNumber-Wert für die Verwendung von Kilometern oder Meilen zurückgibt. –

+0

In meiner Anwendung beabsichtige ich, dem Benutzer die Möglichkeit zu geben, Dinge in Meilen oder Kilometern anzuzeigen. Basierend auf der Rückmeldung zu diesem Thema, ist es klar, dass es keinen eingebauten Mechanismus zum Austausch einer Einheit für die andere gibt, aber es wird nicht allzu schwierig sein, nur eine Methode zu haben, die den booleschen und booleschen Wert überprüft macht eine Umrechnung in Kilometer. Danke für die Antworten. Ich bin mir sicher, dass sie mir irgendwann nützlich sein werden. – TahoeWolverine

+2

Diese Methode wäre immer noch nützlich, um Ihre Präferenz zunächst mit der Systemauswahl des Benutzers für Einheiten zu füllen. Etwas zu beachten. –

-1

Basierend auf meinem Schnelltest NSLocaleUsesMetricSystem möglicherweise nicht zum Suchen, ob die Region der Benutzer Kilometer oder Meilen verwendet.

In Großbritannien sind die Entfernungen in Meilen und die Geschwindigkeit in Meilen pro Stunde, aber NSLocaleUsesMetricSystem liefert 1.

In den USA NSLocaleUsesMetricSystem 0 zurück, die korrekt ist (Abstand in Meilen und die Geschwindigkeit in Meilen pro Stunde) .

In Indien gibt NSLocaleUsesMetricSystem 1 zurück, die wieder korrekt ist (Abstand ist in Kilometer und spee in kph).

Verwandte Themen