2010-01-28 14 views
23

Durante la localizzazione della mia app ho passato molta documentazione, da qualche parte sono sicuro di aver letto che c'è un modo per ottenere un insieme di unità che è collegato con la locale.Trovare la distanza, la valuta, le unità di temperatura ecc. Per un paese (iPhone)

Credo abbia detto qualcosa come "unità basate sul culturale ..." qualcosa.

Vorrei visualizzare la temperatura e la distanza in Fahrenheit e Miglia per alcuni paesi e Celsius e Chilometri per altri paesi.

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

Grazie.

risposta

29

È possibile utilizzare NSLocale per controllare l'unità di valuta, ma per imperiale contro metrica è necessario creare un elenco da soli.

Oops. È possibile effettuare il controllo per la metrica imperiale e metrica. Vi sono le chiavi NSLocaleMeasurementSystem e NSLocaleUsesMetricSystem.

+0

Hi Kenny Thank You! Indovinate ci penserò un po 'come se fosse giustificato caricare un elenco di questo tipo per due piccole etichette:/ – RickiG

+0

@RickiG. Scusate. controllare l'aggiornamento. – kennytm

+0

Ciao Kenny! Grazie per tornare su questo :) semplicemente perfetto, non avevo ancora iniziato a compilare un elenco di paesi vs.sistema di misurazione quindi è arrivato in un momento perfetto. Grazie ancora. – RickiG

9

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

Fa un po 'di arrotondamento sfocato (ad esempio 300ft-> 350ft-> 400ft), ma si adatta bene tra le unità (ad esempio piedi -> miglia, quando appropriato per farlo). A meno che non si richiedano valori veramente precisi, questa classe è perfetta per restituire stime approssimative per le 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/documentation/MapKit/Reference/MKDistanceFormatter_class/Reference/Reference.html

8

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 iOS8 NSFormatter tutorial. Ecco un esempio utilizzando il NSLengthFormatter con rapida:

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

Swift:

1.)

import MapKit 

2.) Dal momento che la creazione di formattazione è costosa, di formattazione è meglio insieme come una proprietà pigro . In questo modo, è possibile inizializzare il formattatore solo quando è necessario e riutilizzare il formattatore anziché 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) 
Problemi correlati