问题描述
我正在尝试格式化一个整数以将其显示为分钟,但我无法获得正确的语法并且文档对此仍然很清楚。这就是我正在尝试的:
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")