我有一个应用程序可以处理许多需要以表格形式显示的可选数据
<Latest value formatted (units)> || "never updated"
显然,我的代码充满了诸如:
var pressureString: String {
(self.lastData != nil) ?
String(format: "%.2f kPa", self.lastData!.pressure.doubleValue)
:
Constants.neverUpdated // NSLocalizedString
}
所以我决定尝试用以下方法整理一下:
var pressureString: String {
self.lastData?.pressure.doubleValue.format("%.2f kPa", or: Constants.neverUpdated)
}
[format
写道:]
extension Optional {
func format(_ formatString: String, or: String) -> String {
if let s = self {
return String(format: formatString, s)
} else {
return or
}
}
}
但是,出现错误“参数类型'Wrapped'与所期望的类型'CVarArg'不符”,并且在https://developer.apple.com/documentation/swift/cvararg查找文档时,我看到了
声明已定义类型符合CVarArg协议不支持标准库之外的内容。
...所以有any格式格式化通用Wrapped
的方法吗?
Swift 5
您可以编写扩展名,例如->
extension Optional where Wrapped == CVarArg {
func format(_ formatString: String, or: String) -> String {
if let self = self {
return String(format: formatString, self)
}
else {
return or
}
}
}