Obtención de la distancia, la moneda, las unidades de temperatura, etc., para un país (iPhone)
-
23-09-2019 - |
Pregunta
Durante la localización de mi aplicación Fui a través de una gran cantidad de documentación, en algún lugar estoy seguro que he leído que hay una manera de obtener un conjunto de unidades que está vinculado con la configuración regional.
Creo que dijo algo así como "unidades basadas en el turismo ..." algo.
Me gustaría temperatura de la pantalla y la distancia en grados Fahrenheit y Miles para algunos países y centígrados y Kilómetros para otros países.
¿Hay una manera de acceder a una lista de estas unidades en el iPhone SDK.
Gracias.
Solución
Se puede utilizar NSLocale
para comprobar la unidad de moneda, pero por contra imperial métrica que necesita para hacer una lista usted mismo .
Vaya. Usted puede de verificación de los vs. imperial métrica. Hay son claves NSLocaleMeasurementSystem
y NSLocaleUsesMetricSystem
.
Otros consejos
Vale la pena mencionar que Apple proporciona una biblioteca agradable (MKDistanceFormatter, introducido en iOS 7) de forma automática presenta un CLLocationDistance como la cadena apropiada para la configuración regional y de idioma de un usuario determinado.
Se hace un poco de redondeo difusa (por ejemplo 300ft-> 350ft-> 400 pies), pero no muy bien convertir entre las unidades (por ejemplo pies -> millas, cuando sea apropiado para hacerlo). A menos que usted exige valores muy precisos, esta clase es perfecto para el retorno de estimaciones aproximadas para las distancias en dos líneas de código.
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
Sólo quería nota, que, al igual que con la liberación de iOS8 habrá nueva NSFormatters
por lo menos algunas de las unidades que usted ha mencionado.
No será NSLengthFormatter
, NSMassFormatter
y NSEnergyFormatter
que son muy fácil de usar - ver esto iOS8 NSFormatter tutorial . Aquí hay un ejemplo usando el NSLengthFormatter con SWIFT:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Swift:
1.)
import MapKit
2.) Desde la creación de formateador es caro, es mejor conjunto formateador como una propiedad perezoso. Al hacerlo, puede inicializar el formateador sólo cuando es necesario y volver a utilizar el formateador en lugar de crear uno nuevo.
lazy var distanceFormatter: MKDistanceFormatter = {
var tempDistanceFormatter = MKDistanceFormatter()
tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3
return tempDistanceFormatter
}()
3.)
let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)
I han extraído este método para extensión de cadena. Se ve elegante
Swift versión 4.1
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)