我有一个变量作为可选的十进制类型,并希望转换为另一个String
类型的变量,如果它是nil,更改为空字符串""
,否则转换为字符串值。然而,我得到错误错误:Binary operator '??' cannot be applied to operands of type 'Decimal?' and 'String'
let iAmNil: Decimal? = nil
let iAmDecimal: Decimal? = 12.34
print(String(describing: iAmDecimal ?? ""))
字符串
2条答案
按热度按时间waxmsbnn1#
如错误所示,您在错误的级别上应用了
??
。您试图为可选的Decimal提供字符串默认值(""
)。这不起作用。您需要的是有条件地将
Decimal?
转换为String?
,然后为 that 提供默认值。最简单的方法是使用
Optional.map(_:)
:字符串
(我使用
"nil"
而不是""
来显示它实际上在输出中工作)当然,你永远不应该使用
String(describing:)
来格式化数字,确保你使用的是像NumberFormatter
这样的语言环境感知工具,它实际上可以正确地完成这些任务。suzh9iv82#
如果你将转换为
Any
,那么这将工作,因为编译器很高兴可以使用Decimal
或String
:字符串