2010-01-28 6 views
23

Während der Lokalisierung meiner App habe ich eine Menge Dokumentation durchgesehen, irgendwo bin ich sicher, dass es einen Weg gibt, eine Menge Einheiten zu bekommen ist mit dem Gebietsschema verknüpft.Finden der Entfernung, Währung, Temperatureinheiten etc. für ein Land (iPhone)

Ich glaube, es sagte etwas wie "Einheiten auf der Grundlage kultureller ..." etwas.

Ich möchte Temperatur und Entfernung in Fahrenheit und Meilen für einige Länder und Celsius und Kilometer für andere Länder anzeigen.

Gibt es eine Möglichkeit, auf eine Liste dieser Einheiten im iPhone SDK zuzugreifen?

Vielen Dank.

Antwort

29

Sie können NSLocale verwenden, um die Währungseinheit zu überprüfen, , aber für imperial vs. metrisch müssen Sie eine Liste selbst machen.

Hoppla. Sie können für die imperialen vs. metrischen überprüfen. Es gibt NSLocaleMeasurementSystem und NSLocaleUsesMetricSystem Schlüssel.

+0

Hallo Kenny Vielen Dank! Ich schätze, ich denke, es ist gerechtfertigt, eine solche Liste für zwei kleine Etiketten zu laden:/ – RickiG

+0

@RickiG. Es tut uns leid. Aktualisierung überprüfen. – kennytm

+0

Hallo Kenny! Danke, dass du wieder da warst :) einfach perfekt, ich hatte noch nicht angefangen, eine Liste von Ländern im Vergleich zu erstellenMesssystem, so kam dies zu einer perfekten Zeit. Danke noch einmal. – RickiG

9

Es ist erwähnenswert, dass Apple eine schöne Bibliothek bietet (MKDistanceFormatter, eingeführt in iOS 7), um automatisch einen CLLocationDistance als die passende Zeichenfolge für das Gebietsschema und die Sprache eines bestimmten Benutzers darzustellen.

Es macht ein wenig fuzzy Runden (z. B. 300ft-> 350ft-> 400ft), aber wandelt gut zwischen Einheiten (z. B. Fuß -> Meilen, wenn geeignet, um dies zu tun). Sofern Sie nicht wirklich genaue Werte verlangen, eignet sich diese Klasse perfekt für die grobe Schätzung von Entfernungen in zwei Codezeilen.

MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init]; 
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional 
NSString *formattedDistance = [distanceFormatter stringFromDistance:100]; 
NSLog(@"%@",formattedDistance); // Prints "350 ft" 

https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKDistanceFormatter_class/Reference/Reference.html

8

Ich wollte nur, dass beachten, wie mit der Veröffentlichung von iOS8 wird es für mindestens einige der Einheiten, die Sie erwähnten neuen NSFormatters sein.

Es wird NSLengthFormatter, NSMassFormatter und NSEnergyFormatter, die sehr einfach zu bedienen - diese iOS8 NSFormatter tutorial zu sehen. Hier ist ein Beispiel des NSLengthFormatter mit schnellen Verwendung:

let lengthFormatter = NSLengthFormatter() 
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer))  //Kilometer: 1,000 km 
1

Swift:

1.)

import MapKit 

2.) Da der Erstellung Formatierer ist teuer, Sie besser Satz Formatierer als faul Eigenschaft . Auf diese Weise können Sie den Formatierer nur bei Bedarf initialisieren und den Formatierer wiederverwenden, anstatt einen neuen zu erstellen.

lazy var distanceFormatter: MKDistanceFormatter = { 
    var tempDistanceFormatter = MKDistanceFormatter() 
    tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3 

    return tempDistanceFormatter 
}() 

3.)

let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)