Как я могу расширить NSMeasurementFormatter для подкласса NSDimension?

В документации разработчика NSDimension приведены два примера работы с настраиваемыми модулями. Один заключается в расширении существующих подклассов NSDimension, а другой - путем создания настраиваемого подкласса NSDimension. При выполнении любого из этих действий и использовании NSMeasurementFormatter он всегда генерирует строку, используя символ, используемый в определении, независимо от того, что unitStyle используется.

Например, используя:

      @interface NSUnitSpeed ()
    + (NSUnitSpeed *) furlongsPerFortnight;
@end

@implementation NSUnitSpeed ()
    + (NSUnitSpeed *) furlongsPerFortnight {
        NSUnitConverter *furlongsPerFortnightToMetersPerSecond = [[NSUnitConverterLinear alloc] initWithCoefficient: 201.168 / 1209600.0];
        return [[NSUnitSpeed alloc] initWithSymbol: @"fur/ftn" converter: furlongsPerFortnightToMetersPerSecond];
    }
@end

Потом:

      MSMeasurement *tenFurPerFtn = [[NSMeasurement alloc] initWithDoubleValue: 10.0 unit: [NSUnitSpeed furlongsPerFortnight]];

NSMeasurementFormatter *mfm1 = [[NSMeasurementFormatter alloc] init];
mfm1.unitStyle = NSFormattingUnitStyleShort;
mfm1.unitOptions = NSMeasurementFormatterUnitOptionsProvidedUnit;
NSString *short = [mfm1 stringFromMeasurement: tenFurPerFtn];

NSMeasurementFormatter *mfm2 = [[NSMeasurementFormatter alloc] init];
mfm2.unitStyle = NSFormattingUnitStyleMedium;
mfm2.unitOptions = NSMeasurementFormatterUnitOptionsProvidedUnit;
NSString *medium = [mfm2 stringFromMeasurement: tenFurPerFtn];

NSMeasurementFormatter *mfm3 = [[NSMeasurementFormatter alloc] init];
mfm3.unitStyle = NSFormattingUnitStyleLong;
mfm3.unitOptions = NSMeasurementFormatterUnitOptionsProvidedUnit;
NSString *long = [mfm3 stringFromMeasurement: tenFurPerFtn];

комплектов, а до 10 мех / фтн .

Мои вопросы в порядке приоритета:

  1. Есть ли способ заставить NSMeasurmentFormatter генерировать 10 мех / фут в short,10 меха на фут в medium, и 10 фарлонгов за две недели в long?
  2. Что об этом зная , что это должно быть 1 фарлонг в двух недель вместо 10 фарлонг лет за две недели ?
  3. Наконец, что если я захочу локализовать строки?

Похоже, что существует протокол или расширение для предоставления этих строк модулю форматирования с помощью настраиваемого подкласса, но я не смог его найти.

Спасибо

0 ответов

Другие вопросы по тегам