Для тех, кто придет сюда в будущем. Вы получите правильную строку, если вы не измените NSLocale
в коде. Если вам нужно изменить это, сделайте это в Системных настройках. stringFromKilograms
- это ключевой метод, который предоставляет метрическую строку. Также можно настроить NSNumberFormatter
для печати округленных значений, установив maximumFractionDigits
в 0.
После этого вам не нужно проверять метрическую систему с помощью [[NSLocale currentLocale] usesMetricSystem]
NSNumber *weightInGrams = @(62403.0);
NSMassFormatter *formatter = [NSMassFormatter new];
formatter.forPersonMassUse = YES;
formatter.unitStyle = NSFormattingUnitStyleShort;
//formatter.numberFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; -> source of bug
formatter.numberFormatter.maximumFractionDigits = 0;
NSString *weightString = [formatter stringFromKilograms:[weightInGrams doubleValue]/1000];
Печатает правильно:
(lldb) po weightString3
138lb