Как я могу расширить 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 мех / фтн .
Мои вопросы в порядке приоритета:
- Есть ли способ заставить NSMeasurmentFormatter генерировать 10 мех / фут в
short
,10 меха на фут вmedium
, и 10 фарлонгов за две недели вlong
? - Что об этом зная , что это должно быть 1 фарлонг в двух недель вместо 10 фарлонг лет за две недели ?
- Наконец, что если я захочу локализовать строки?
Похоже, что существует протокол или расширение для предоставления этих строк модулю форматирования с помощью настраиваемого подкласса, но я не смог его найти.
Спасибо