NSDateComponentsFormatter Разделитель единиц

Я хочу преобразовать время в минутах в удобную для пользователя строку. Следующий код решает проблему, кроме одной вещи - я хочу, чтобы результат выглядел как 1 hr 30 minОднако я получил 1 hr, 30 min, Как указать разделитель единиц для NSDateComponentsFormatter? Конечно, я могу удалить все запятые вручную, но это не лучший способ для меня.

    NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init];
    formatter.allowedUnits = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute;
    formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleShort;

    NSLog(@"%@", [formatter stringFromTimeInterval:90*60]);

2 ответа

Решение

Если ваше приложение предназначено для OS X 10.12 (или, я полагаю, более поздней версии) или iOS 10.10 (или более поздней версии), то Apple добавила новый стиль модулей, который называется "NSDateComponentsFormatterUnitsStyleBrief".

formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleBrief

и он распечатает "1 час 30 минут"

https://developer.apple.com/reference/foundation/nsdatecomponentsformatterunitsstyle/nsdatecomponentsformatterunitsstylebrief?language=objc

Заменить эту строку кода formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleShort;

с

formatter.unitsStyle = NSDateComponentsFormatterUnitsStyleAbbreviated;

Это работа по вашему требованию. Я проверяю в своем проекте xcode.

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