solucion - porque se calienta mi iphone 6
Encontrar la distancia, moneda, unidades de temperatura, etc. para un país(iPhone) (5)
Durante la localización de mi aplicación pasé por una gran cantidad de documentación, en algún lugar, estoy seguro de haber leído que hay una forma de obtener un conjunto de unidades que está vinculado con la configuración regional.
Creo que decía algo así como "unidades basadas en cultura ..." algo.
Me gustaría mostrar la temperatura y la distancia en grados Fahrenheit y Miles para algunos países y grados Celsius y Kilómetros para otros países.
¿Hay alguna forma de acceder a una lista de estas unidades en el iPhone SDK?
Gracias.
He extraído este método a la extensión String. Se ve elegante
Versión Swift 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)
Rápido:
1.)
import MapKit
2.) Como la creación del formateador es costosa, es mejor configurar el formateador como una propiedad perezosa. Al hacerlo, puede inicializar el formateador solo cuando sea necesario y reutilizarlo 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)
Solo quería señalar que, al igual que con el lanzamiento de iOS8 , habrá nuevos NSFormatters
para al menos algunas de las unidades que mencionó.
Habrá NSLengthFormatter
, NSMassFormatter
y NSEnergyFormatter
que son muy fáciles de usar; consulte este tutorial de iOS8 NSFormatter . Aquí hay un ejemplo usando el NSLengthFormatter con swift:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Vale la pena mencionar que Apple proporciona una biblioteca agradable (MKDistanceFormatter, introducida en iOS 7) para presentar automáticamente una CLLocationDistance como la cadena adecuada para la ubicación y el idioma de un usuario determinado.
Hace un poco de redondeo difuso (por ejemplo, 300 pies -> 350 pies -> 400 pies), pero se convierte muy bien entre unidades (por ejemplo, pies -> millas, cuando sea apropiado hacerlo). A menos que exija valores realmente precisos, esta clase es perfecta para obtener 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"
Puede usar NSLocale
para verificar la unidad monetaria, pero para imperial vs métrico necesitas hacer una lista tú mismo .
Ups. Puedes verificar la métrica imperial vs. Hay claves NSLocaleMeasurementSystem
y NSLocaleUsesMetricSystem
.