2014-09-27 2 views
0

Таким образом, в IOS 8 были некоторые форматтеры добавлены такие как: NSEnergyFormatter, NSMassFormatter и NSLengthFormatter. Предполагается, что эти форматы должны подтвердить локаль пользователя, установленную в настройках.NSLengthFormatter не отображается правильное значение

Так что у меня этот код:

NSLengthFormatter *formatter = [[NSLengthFormatter alloc] init]; 
NSString *converted = [formatter stringFromValue:24.0 unit:NSLengthFormatterUnitInch]; 

NSLog(@"%@", converted); 

Этого код выход 24 in, даже если мой задан язык словенского, который я думаю, должен отображать длину в метрической системе.

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

документация, видимо, еще не сделано: https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSFormatter_Class/

Что именно точка форматере, если он не делает преобразование?

Спасибо!

ответ

2

Для конвертирования единиц, я думаю, NSLengthFormatter принимает только SI unit длина, в частности, «Метр».

Например (в Swift):

let formatter = NSLengthFormatter() 
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "en-US") 
formatter.stringFromMeters(0.5) 

Результаты "1.64 ft"

stringFromValue:unit: является отображение "единицы" строку для стандарта.

let formatter = NSLengthFormatter() 
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "fr-FR") 
formatter.unitStyle = NSFormattingUnitStyle.Long 
formatter.stringFromValue(12.0, unit: NSLengthFormatterUnit.Inch); 

результаты "12 pouces"

UPD:

Я думаю, что эти новые NSFormatter подклассы в основном ориентированы на работу с каркасом "HealthKit".
Фактически, HealthKit имеет возможность преобразования единиц.

Попробуйте это площадка:

import HealthKit 

// input value 
let foot = HKUnit.footUnit() 
let footQuantity = HKQuantity(unit: foot, doubleValue: 1.23) 

// to convert unit 
let mm = HKUnit(fromString: "mm") 
let mmVal = footQuantity.doubleValueForUnit(mm) // -> 374.904 
let mmQuantity = HKQuantity(unit: mm, doubleValue: mmVal) 

// coordinate with formatter 
let formatter = NSLengthFormatter() 
let mmFormat = HKUnit.lengthFormatterUnitFromUnit(mm) 
formatter.numberFormatter.locale = NSLocale(localeIdentifier: "sl-SI") 
formatter.stringFromValue(mmVal, unit: mmFormat) // -> "374,904 mm" 
+0

Но у меня есть данные в фут, а не метров, поэтому мне нужно преобразовать из футов в метры и наоборот. – Legoless

+0

Отредактировано ответ – rintaro

+0

Да, но это не приложение HealthKit прямо сейчас (возможно, в будущем). Могу ли я использовать это преобразование только из HK без фактических прав на HealthKit? – Legoless

Смежные вопросы