Obtención de la distancia, la moneda, las unidades de temperatura, etc., para un país (iPhone)

StackOverflow https://stackoverflow.com/questions/2153302

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.

¿Fue útil?

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"

https://developer.apple. com / biblioteca / ios / documentación / MapKit / Referencia / MKDistanceFormatter_class / Referencia / reference.html

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top