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.