使用新的 Foundation 格式化程序将整数格式化为分钟?

问题描述

我正在尝试格式化一个整数以将其显示为分钟,但我无法获得正确的语法并且文档对此仍然很清楚。这就是我正在尝试的:

let value: Int = 20
Text(value.formatted(.components(style: .abbreviated,fields: [.minute])))
// Compile error: Instance method 'formatted' requires the types 'Int' and 'Date.ComponentsFormatStyle.FormatInput' (aka 'Range<Date>') be equivalent

我正在尝试显示20 min。如何使用 WWDC 2021 的 new Foundation formatters 改进来实现这一点?

我可以像这样用旧方法做到这一点:

static let formatter: DateComponentsFormatter = {
    let formatter = DateComponentsFormatter()
    formatter.unitsstyle = .short
    formatter.allowedUnits = [.minute]
    return formatter
}()

Self.formatter.string(for: DateComponents(minute: value))

解决方法

要格式化一个整数,你需要一个 NumberFormatter。或者你可以这样做:

Text("\(value) min")

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...