Trouver la distance, la monnaie, les unités de température, etc. pour un pays (iPhone)
-
23-09-2019 - |
Question
Au cours de la localisation de mon application, je suis passé par beaucoup de documents, quelque part je suis sûr que je lis qu'il ya un moyen d'obtenir un ensemble d'unités qui est lié à l'environnement local.
Je crois qu'il a dit quelque chose comme « unités basées sur la culture ... » quelque chose.
Je voudrais afficher la température et de la distance en degrés Fahrenheit et Miles pour certains pays et C et pour les autres pays kilomètres.
Y at-il un moyen d'accéder à une liste de ces unités dans le SDK iPhone.
Merci vous.
La solution
Vous pouvez utiliser NSLocale
pour vérifier l'unité monétaire, mais pour impérial contre métrique vous devez faire une liste vous .
Oops. Vous peut vérifier l'impériale contre métrique. Il est des touches de NSLocaleMeasurementSystem
et NSLocaleUsesMetricSystem
.
Autres conseils
Il est à noter que Apple offre une belle bibliothèque (MKDistanceFormatter, introduit dans iOS 7) pour présenter automatiquement une CLLocationDistance que la chaîne appropriée pour les paramètres régionaux et la langue d'un utilisateur donné.
Il fait un peu arrondi flou (par exemple 300ft-> 350ft-> 400ft), mais ne convertit bien entre les unités (par exemple les pieds -> miles, le cas échéant de le faire). À moins que vous exigez des valeurs vraiment précises, cette classe est parfait pour le retour des estimations approximatives pour les distances dans deux lignes de code.
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
Je voulais juste noter que, comme avec la sortie de iOS8 il y aura de nouveaux NSFormatters
pour au moins quelques-unes des unités que vous avez mentionnés.
Il y aura NSLengthFormatter
, NSMassFormatter
et NSEnergyFormatter
qui sont très faciles à utiliser - voir cette iOS8 tutoriel NSFormatter . Voici un exemple en utilisant le NSLengthFormatter avec rapide:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Swift:
1).
import MapKit
2.) Depuis la création de formatter est cher, il vaut mieux définir formatter comme une propriété paresseuse. Ce faisant, vous pouvez initialiser le formatter seulement quand il est nécessaire et réutiliser le formatter plutôt que de créer un nouveau.
lazy var distanceFormatter: MKDistanceFormatter = {
var tempDistanceFormatter = MKDistanceFormatter()
tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3
return tempDistanceFormatter
}()
3).
let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)
Je l'ai extrait cette méthode pour l'extension String. Allure élégante
Swift version 4.1
import MapKit
extension String {
init(distance: Double ) {
let mkDistanceFormatter = MKDistanceFormatter()
mkDistanceFormatter.unitStyle = .abbreviated
self = mkDistanceFormatter.string(fromDistance: distance)
}
}
Utilisation
let distance = Double(34234.0)
let stringDistance String(distance:distance)