Domanda

Durante la localizzazione della mia app ho passato un sacco di documentazione, da qualche parte sono sicuro ho letto che c'è un modo per ottenere un insieme di unità che è collegato con il locale.

Credo che ha detto qualcosa come "unità di base di cultura ..." qualcosa.

Vorrei visualizzare la temperatura e la distanza in gradi Fahrenheit e Miles per alcuni paesi e Celsius e chilometri per gli altri paesi.

C'è un modo per accedere a un elenco di queste unità in iPhone SDK.

Grazie te.

È stato utile?

Soluzione

È possibile utilizzare NSLocale per controllare l'unità monetaria, ma per imperiale vs. metrica è necessario fare una lista da soli .

Spiacenti. possono verificare la presenza imperiale vs. metrica. C'è sono NSLocaleMeasurementSystem e NSLocaleUsesMetricSystem chiavi.

Altri suggerimenti

Vale la pena ricordare che Apple fornisce una bella libreria (MKDistanceFormatter, introdotto in iOS 7) per presentare automaticamente un CLLocationDistance come la stringa appropriata per un determinato locale dell'utente e la lingua.

Si fa un po 'di arrotondamento sfocata (per esempio 300ft-> 350ft-> 400ft), ma che ben la conversione tra unità (ad esempio i piedi -> miglia, quando opportuno farlo). A meno che non si domanda valori davvero precisi, questa classe è ideale per la restituzione stime approssimative per distanze in due righe di codice.

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 / documentazione / MapKit / Reference / MKDistanceFormatter_class / Reference / Reference.html

Volevo solo notare, che, come con il rilascio di iOS 8 ci saranno nuove NSFormatters per almeno alcune delle unità che hai menzionato.

Ci saranno NSLengthFormatter, NSMassFormatter e NSEnergyFormatter che sono molto facili da usare - vedere questo iOS 8 NSFormatter esercitazione . Ecco un esempio utilizzando il NSLengthFormatter con rapida:

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

Swift:

1).

import MapKit

2.) Dal momento che la creazione di formattazione è costoso, è meglio impostare formattatore come una proprietà pigro. In questo modo, è possibile inizializzare il formattatore solo quando è necessario e riutilizzare il formattatore piuttosto che crearne uno nuovo.

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

    return tempDistanceFormatter
}()

3).

let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)

ho estratto questo metodo per estensione String. Sembra elegante

Swift 4.1 versione

import MapKit

extension String {
    init(distance: Double ) {
        let mkDistanceFormatter = MKDistanceFormatter()
        mkDistanceFormatter.unitStyle = .abbreviated
        self = mkDistanceFormatter.string(fromDistance: distance)
    }
}

Uso

let distance = Double(34234.0)
let stringDistance String(distance:distance)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top