2010-01-28 11 views
23

Lors de la localisation de mon application, je suis passé par beaucoup de documentation, quelque part je suis sûr d'avoir lu qu'il existe un moyen d'obtenir un ensemble d'unités. est lié à la localisation. Je crois qu'il a dit quelque chose comme "unités basées sur culturel ..." quelque chose. Je souhaite afficher la température et la distance en degrés Fahrenheit et en miles pour certains pays et en degrés Celsius et en kilomètres pour les autres pays.Recherche de la distance, de la devise, des unités de température etc. pour un pays (iPhone)

Y at-il un moyen d'accéder à une liste de ces unités dans le SDK iPhone.

Merci à vous.

Répondre

29

Vous pouvez utiliser NSLocale pour vérifier l'unité monétaire, mais pour impérial vs. métrique vous devez faire une liste vous-même.

Oups. Vous pouvez vérifier pour l'impériale vs métrique. Il y a NSLocaleMeasurementSystem et NSLocaleUsesMetricSystem touches.

+0

Salut Kenny Merci! Devinez Je vais le considérer comme s'il était justifié de charger une telle liste pour deux petites étiquettes:/ – RickiG

+0

@RickiG. Pardon. vérifier la mise à jour. – kennytm

+0

Salut Kenny! Merci de revenir sur celui-ci :) juste parfait, je n'avais pas encore commencé à compiler une liste de pays vs.système de mesure si cela est venu à un moment parfait. Merci encore. – RickiG

9

Il est à noter qu'Apple fournit une belle bibliothèque (MKDistanceFormatter, introduite dans iOS 7) pour présenter automatiquement une CLLocationDistance comme la chaîne appropriée pour les paramètres régionaux et la langue d'un utilisateur donné. Il effectue un arrondi légèrement flou (par exemple 300ft-> 350ft-> 400ft), mais convertit bien entre unités (par exemple, pieds -> miles, le cas échéant). Sauf si vous exigez des valeurs vraiment précises, cette classe est parfaite pour renvoyer 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" 

https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKDistanceFormatter_class/Reference/Reference.html

8

Je voulais juste noter que, comme la libération 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 ce iOS8 NSFormatter tutorial. Voici un exemple en utilisant le NSLengthFormatter avec rapide:

let lengthFormatter = NSLengthFormatter() 
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer))  //Kilometer: 1,000 km 
1

Swift:

1.)

import MapKit 

2.) Depuis la création de formatter est cher, vous feriez mieux de jeu comme une propriété formatter paresseux . Ce faisant, vous pouvez initialiser le formateur uniquement lorsque cela est nécessaire et réutiliser le formateur plutôt que d'en 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)