para medicion app ios units-of-measurement

ios - medicion - measure iphone 6



¿Cómo sé cuál es el sistema de medida predeterminado(imperial o métrico) en iOS? (6)

@DarkDust responde por swift3

//User region setting return let locale = Locale.current //NSLocale.current //Returns true if the locale uses the metric system let isMetric = locale.usesMetricSystem

¿Cómo sé cuál es el sistema de medida predeterminado (imperial o métrico) en iOS?

¿Cómo obtengo esta preferencia de la configuración del dispositivo, entonces sé qué mostrar en mi aplicación?

Gracias


Como otros mencionaron antes, el Reino Unido usa una combinación de unidades métricas e imperiales.

Recomendaría usar el nuevo MeassurementFormatter introducido en iOS 10 que maneja la mayoría de estas discrepancias:

import Foundation let locale = Locale(identifier: "EN_UK") locale.usesMetricSystem // true! var formatter = MeasurementFormatter() formatter.locale = locale formatter.string(from: Measurement(value: 1000, unit: UnitLength.meters)) // 0.621 mi

Para representar una distancia como una cadena en una unidad natural local, use:

let distanceInMeters: CLLocationDistance = 1000 let formatter = MeasurementFormatter() formatter.string(from: Measurement(value: distanceInMeters, unit: UnitLength.meters)) // 0.621 mi

Documentación oficial: https://developer.apple.com/documentation/foundation/measurementformatter


Para veloz 3

let locale = NSLocale.current let isMetric = locale.usesMetricSystem


Probablemente solo deba tener una configuración en su aplicación y dejar que los usuarios elijan; esto es lo que Apple hace en la aplicación Meteorología.

Si desea elegir un valor predeterminado razonable, puede consultar la configuración regional. Si es EE. UU., Elija imperial; de lo contrario, elija métrica. Es una heurística, a veces estará mal, pero es solo un defecto que puede cambiarse.


aquí hay una versión rápida

var locale = NSLocale.currentLocale() let isMetric = locale.objectForKey(NSLocaleUsesMetricSystem) as! Bool


NSLocale puede decirle:

NSLocale *locale = [NSLocale currentLocale]; BOOL isMetric = [[locale objectForKey:NSLocaleUsesMetricSystem] boolValue];

Solo tres países no usan el sistema métrico: los EE. UU., Liberia y Myanmar. El último usa su propio sistema, los dos primeros usan Unidades Imperiales.

La documentación de las manzanas dice (énfasis mío):

NSLocaleUsesMetricSystem

La clave para la bandera que indica si la configuración regional usa el sistema métrico. El valor correspondiente es un objeto booleano NSNumber. Si el valor es NO, normalmente puede suponer unidades de medida estadounidenses (por ejemplo, la milla del estatuto).

Disponible en iOS 2.0 y posterior.