Das Finden der Entfernung, Währung, Temperatureinheiten usw. für ein Land (iPhone)
-
23-09-2019 - |
Frage
Während der Lokalisierung von meiner app ich ging durch eine Menge an Dokumentation, irgendwo Ich bin sicher, las ich, dass es einen Weg gibt eine Reihe von Einheiten zu erhalten, die mit den Lokalisierungs verknüpft.
Ich glaube, es sagte etwas wie „Einheiten basiert auf kulturellen ...“ etwas.
Ich möchte Anzeige Temperatur und Entfernung in Fahrenheit und Miles für einige Länder und Celsius und Kilometer für andere Länder.
Gibt es eine Möglichkeit, eine Liste dieser Einheiten im iPhone SDK zugreifen zu können.
Danke dir.
Lösung
Sie können NSLocale
verwenden, um die Währungseinheit zu überprüfen, aber für imperiale vs. metric Sie müssen eine Liste machen Sie sich .
Oops. Sie können überprüfen Sie die imperiale vs. Metrik. Es ist sind NSLocaleMeasurementSystem
und NSLocaleUsesMetricSystem
Tasten.
Andere Tipps
Es ist erwähnenswert, dass Apple eine schöne Bibliothek bietet (MKDistanceFormatter, eingeführt in iOS 7), um automatisch eine CLLocationDistance als die entsprechenden Zeichenfolge Geschenk für ein Gebietsschema des gegebenen Benutzers und Sprache.
Es tut ein wenig unscharf Rundung (z 300ft-> 350ft-> 400ft), aber konvertiert schön zwischen den Einheiten (z Füße -> Meilen gegebenenfalls zu tun). Sofern Sie nicht wirklich präzise Werte verlangen, diese Klasse ist ideal für in zwei Zeilen Code grobe Schätzungen für Entfernungen zurück.
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
Ich will nur zur Kenntnis, dass, wie bei der Veröffentlichung von iOS8 wird es neuer NSFormatters
sein für zumindest einige der Einheiten, die Sie erwähnen.
Es wird NSLengthFormatter
, NSMassFormatter
und NSEnergyFormatter
die Verwendung sehr einfach sind - sehen Sie diese iOS8 NSFormatter Tutorial . Hier ist ein Beispiel des NSLengthFormatter mit schnellen Verwendung:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Swift:
1).
import MapKit
2). Da Formatierer Erstellung ist teuer, Sie besser Satz Formatierer als faul Eigenschaft. Auf diese Weise können Sie die Formatierungs nur initialisieren, wenn es notwendig ist, und wieder verwenden die Formatierungs 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)
Ich habe diese Methode zu String Erweiterung extrahiert. Sieht elegant
Swift Version 4.1
import MapKit
extension String {
init(distance: Double ) {
let mkDistanceFormatter = MKDistanceFormatter()
mkDistanceFormatter.unitStyle = .abbreviated
self = mkDistanceFormatter.string(fromDistance: distance)
}
}
Verwendung
let distance = Double(34234.0)
let stringDistance String(distance:distance)