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.

War es hilfreich?

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"

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

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top