Определение расстояния, валюты, единиц измерения температуры и т.д.для страны (iPhone)

StackOverflow https://stackoverflow.com/questions/2153302

Вопрос

Во время локализации моего приложения я просмотрел много документации, где-то, я уверен, я читал, что есть способ получить набор модулей, который связан с локализацией.

По-моему, там было сказано что-то вроде "единицы измерения, основанные на культурном ..." что-то в этомроде.

Я хотел бы отображать температуру и расстояние в градусах Фаренгейта и Милях для некоторых стран и в градусах Цельсия и километрах для других стран.

Есть ли способ получить доступ к списку этих устройств в 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"

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

Я просто хотел отметить, что, как и в случае с выпуском 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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top