Определение расстояния, валюты, единиц измерения температуры и т.д.для страны (iPhone)
-
23-09-2019 - |
Вопрос
Во время локализации моего приложения я просмотрел много документации, где-то, я уверен, я читал, что есть способ получить набор модулей, который связан с локализацией.
По-моему, там было сказано что-то вроде "единицы измерения, основанные на культурном ..." что-то в этомроде.
Я хотел бы отображать температуру и расстояние в градусах Фаренгейта и Милях для некоторых стран и в градусах Цельсия и километрах для других стран.
Есть ли способ получить доступ к списку этих устройств в iPhone SDK.
Спасибо тебе.
Решение
Вы можете использовать NSLocale
для проверки денежной единицы, но для imperial vs .показатель, который вам нужно составить самостоятельно.
Упс.Ты может проверьте , есть ли имперский противметрический показатель.Есть , есть NSLocaleMeasurementSystem
и NSLocaleUsesMetricSystem
ключи.
Другие советы
Стоит упомянуть, что Apple предоставляет хорошую библиотеку (MKDistanceFormatter, представленную в iOS 7) для автоматического представления CLLocationDistance в качестве соответствующей строки для локали и языка данного пользователя.
Это делает небольшое нечеткое округление (например300 футов-> 350 футов-> 400 футов), но хорошо конвертируется между единицами измерения (напримерфуты -> мили, когда это уместно).Если вам не требуются действительно точные значения, этот класс идеально подходит для возврата приблизительных оценок расстояний в двух строках кода.
MKDistanceFormatter *distanceFormatter = [[MKDistanceFormatter alloc] init];
[distanceFormatter setUnitStyle:MKDistanceFormatterUnitStyleAbbreviated]; // Optional
NSString *formattedDistance = [distanceFormatter stringFromDistance:100];
NSLog(@"%@",formattedDistance); // Prints "350 ft"
Я просто хотел отметить, что, как и в случае с выпуском iOS8 там будут новые NSFormatters
по крайней мере, для некоторых из упомянутых вами подразделений.
Там будет NSLengthFormatter
, NSMassFormatter
и NSEnergyFormatter
которые очень просты в использовании – смотрите это Учебное пособие по iOS8 NSFormatter.Вот пример использования NSLengthFormatter с swift:
let lengthFormatter = NSLengthFormatter()
println(@"Kilometer: %@", lengthFormatter.stringFromValue(1000, unit: .Kilometer)) //Kilometer: 1,000 km
Быстрый:
1.)
import MapKit
2.) Поскольку создание formatter обходится дорого, вам лучше установить formatter в качестве отложенного свойства.Поступая таким образом, вы можете инициализировать средство форматирования только тогда, когда это необходимо, и повторно использовать средство форматирования, а не создавать новое.
lazy var distanceFormatter: MKDistanceFormatter = {
var tempDistanceFormatter = MKDistanceFormatter()
tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3
return tempDistanceFormatter
}()
3.)
let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)
Я извлек этот метод в String extension.Выглядит элегантно
Версия Swift 4.1
import MapKit
extension String {
init(distance: Double ) {
let mkDistanceFormatter = MKDistanceFormatter()
mkDistanceFormatter.unitStyle = .abbreviated
self = mkDistanceFormatter.string(fromDistance: distance)
}
}
Использование
let distance = Double(34234.0)
let stringDistance String(distance:distance)