如何在 Text() 内的 SwiftUI 中使用 swift-currency 显示货币而不显示“可选”?

问题描述

我正在尝试使用以下库:https://github.com/peek-travel/swift-currency

我遇到的问题是我是否有一个变量:

let dollaramount:USD = USD(1.88)

当我这样做时:

Text(dollaramount) // I get errors about "Initializer 'Init(_:)' requires that 'USD' conform to 'StringProtocol'

当我尝试时:

Text("\(dollaramount)") // I get error about "Instance method 'appendINterpolation' requires that 'USD' conform to '_FormatSpecifiable'

我的尝试:

Text("\(dollaramount.localizedString()).") // No errors,but the SwiftUI Text element shows "Optional(USD(1.17))"

显示字符串的正确方法是什么,这样我就不会得到所有的 Optional(USD(1.17)) 而只是像它应该的那样显示“$1.17”?另外,使用 USD 作为此类变量的类型是否正确?我读过 float 和 double 不应该用于货币。如果在进行大量货币处理时美元不是首选类型,请提供正确的替代方案。

解决方法

因为 localizedString() 返回可选值。您可以简单地提供默认值以避免 nil

 Text("\(dollaramount.localizedString() ?? "My optional").")