2010-01-28 12 views
23

Durante la localización de mi aplicación he revisado mucha documentación, en algún lugar estoy seguro de haber leído que hay una manera de obtener un conjunto de unidades que está vinculado con la configuración regional.Encontrar la distancia, la moneda, las unidades de temperatura, etc. para un país (iPhone)

Creo que decía algo así como "unidades basadas en lo cultural ..." algo.

Me gustaría visualizar la temperatura y la distancia en Fahrenheit y Miles para algunos países y Celsius y Kilómetros para otros países.

Hay una manera de acceder a una lista de estas unidades en el SDK de iPhone.

Gracias.

Respuesta

29

Puede usar NSLocale para verificar la unidad monetaria, , pero para imperial vs. métrico necesita hacer una lista usted mismo.

Vaya. Usted puede verificar el imperial vs. métrico. Hay son NSLocaleMeasurementSystem y NSLocaleUsesMetricSystem claves.

+0

Hola Kenny Gracias! Supongo que lo pensaré más como si pudiera justificarse cargar una lista para dos etiquetas pequeñas:/ – RickiG

+0

@RickiG. Lo siento. comprueba la actualización. – kennytm

+0

¡Hola, Kenny! Gracias por volver a este :) simplemente perfecto, aún no había comenzado a compilar una lista de países vs.sistema de medición por lo que esto llegó en un momento perfecto. Gracias de nuevo. – RickiG

9

Vale la pena mencionar que Apple proporciona una buena biblioteca (MKDistanceFormatter, presentada en iOS 7) para presentar automáticamente una CLLocationDistance como la cadena apropiada para la configuración regional y el idioma de un usuario determinado.

Hace un pequeño redondeo difuso (por ejemplo, 300ft-> 350ft-> 400ft), pero se convierte muy bien entre unidades (por ejemplo, pies -> millas, cuando corresponda). A menos que exija valores realmente precisos, esta clase es perfecta para devolver estimaciones aproximadas de 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" 

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

8

sólo quería señalar, que, al igual que con la liberación de iOS8 habrá nueva NSFormatters por lo menos algunas de las unidades que usted ha mencionado.

Habrá NSLengthFormatter, NSMassFormatter y NSEnergyFormatter que están muy fácil de usar - ver este iOS8 NSFormatter tutorial. Aquí hay un ejemplo usando el NSLengthFormatter con rapidez:

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

Swift:

1.)

import MapKit 

2.) Desde la creación de formateador es caro, es mejor que formateador conjunto como una propiedad perezoso . Al hacerlo, puede inicializar el formateador solo cuando sea necesario y reutilizar 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) 
Cuestiones relacionadas