Подтвердить что ты не робот

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

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

Я считаю, что он сказал что-то вроде "единиц, основанных на культурных..." что-то.

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

Есть ли способ получить доступ к списку этих устройств в iPhone SDK.

Спасибо.

4b9b3361

Ответ 1

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

К сожалению. Вы можете проверить имперскую и метрическую. Существуют клавиши NSLocaleMeasurementSystem и NSLocaleUsesMetricSystem.

Ответ 2

Следует отметить, что Apple предоставляет красивую библиотеку (MKDistanceFormatter, представленную в iOS 7) для автоматического представления CLLocationDistance в качестве соответствующей строки для данного языка и языка пользователя.

Он делает небольшое нечеткое округление (например, 300ft- > 350ft- > 400ft), но прекрасно преобразует между единицами (например, футы → мили, когда это необходимо). Если вы не требуете действительно точных значений, этот класс идеально подходит для возврата приблизительных оценок расстояний в двух строках кода.

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

Ответ 3

Я просто хотел отметить, что, как и при выпуске iOS8, будет появляться новый NSFormatters для хотя бы некоторых из упомянутых вами единиц.

Там будут NSLengthFormatter, NSMassFormatter и NSEnergyFormatter, которые очень просты в использовании - см. этот учебник iOS8 NSFormatter. Вот пример использования NSLengthFormatter с быстрым:

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

Ответ 4

Swift:

1).

import MapKit

2.) Поскольку создание форматирования дорого, вы можете установить форматтер как ленивое свойство. Поступая таким образом, вы можете инициализировать форматировщик только тогда, когда это необходимо, и повторное использование форматирования, а не создание нового.

lazy var distanceFormatter: MKDistanceFormatter = {
    var tempDistanceFormatter =  MKDistanceFormatter()
    tempDistanceFormatter.unitStyle = .Abbreviated // .abbreviated in Swift 3

    return tempDistanceFormatter
}()

3).

let distanceString = self.distanceFormatter.stringFromDistance(yourDistance)