Чтобы сделать это проще, я предполагаю, что сохраненное значение основано на кг.
NSMeasurement *measurement = [[NSMeasurement alloc] initWithDoubleValue:0.1 unit:NSUnitMass.kilograms];
NSLog(@"Measurement value = %@", measurement);
NSLog
результат
Measurement value = <NSMeasurement: 0x28028ada0> value: 0.100000 unit: kg
Здесь мы можем видеть, что у нас есть значение 0.1
и единица измерения в kg
.
Это рецепт, и чаще используется "g", когда значение меньше 1 кг.
Мы можем преобразовать unit
, если value
ниже 1
NSMeasurementFormatter *formatter = [[NSMeasurementFormatter alloc] init];
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
if (measurement.doubleValue < 1.0) {
NSLog(@"Locale (G) measurement value = %@", [formatter stringFromMeasurement:[measurement measurementByConvertingToUnit:NSUnitMass.grams]]);
} else {
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
}
NSLog
результат
Locale (KG) measurement value = 0,1 kg
Locale (G) measurement value = 0,1 kg
Результат все еще в kg
, это вызвано unitOptions
По умолчанию, если для unitOptions задано пустое значение, средство форматирования будет делать следующее:
- килокалорий можно отформатировать как "C "вместо" ккал "в зависимости от локали.
- километровPerHour может быть отформатирован как" миль в час "для США и Великобритании, но" километров в час "для других локалей.
Мы просто должны изменить это
formatter.unitOptions = NSMeasurementFormatterUnitOptionsProvidedUnit;
if (measurement.doubleValue < 1.0) {
NSLog(@"Locale (G) measurement value = %@", [formatter stringFromMeasurement:[measurement measurementByConvertingToUnit:NSUnitMass.grams]]);
} else {
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
}
NSLog
результат
Locale (G) measurement value = 100 g
Полный код
NSMeasurement *measurement = [[NSMeasurement alloc] initWithDoubleValue:0.1 unit:NSUnitMass.kilograms];
NSLog(@"Measurement value = %@", measurement);
NSMeasurementFormatter *formatter = [[NSMeasurementFormatter alloc] init];
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
if (measurement.doubleValue < 1.0) {
NSLog(@"Locale (G) measurement value = %@", [formatter stringFromMeasurement:[measurement measurementByConvertingToUnit:NSUnitMass.grams]]);
} else {
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
}
formatter.unitOptions = NSMeasurementFormatterUnitOptionsProvidedUnit;
if (measurement.doubleValue < 1.0) {
NSLog(@"Locale (G) measurement value = %@", [formatter stringFromMeasurement:[measurement measurementByConvertingToUnit:NSUnitMass.grams]]);
} else {
NSLog(@"Locale (KG) measurement value = %@", [formatter stringFromMeasurement:measurement]);
}