Swift 二进制运算符不能应用于格式化函数

Swift binary operator can not be applied into formatted function

提问人:Nus 提问时间:11/2/2023 更新时间:11/2/2023 访问量:43

问:

我正在尝试使用格式化函数将 to 值的总和转换为带有硬编码字符串的货币。但我有以下错误。

二进制运算符“+”不能应用于“Double”和“String”类型的操作数

我尝试过传递货币信号值的格式化函数并且工作正常,但是当我尝试使用 + 运算符添加两个值时,我得到了上面的错误。

这是产生错误的行..

if isOn2 {
Text("\(order.productTotal + fee.formatted(.currency(code: "GBP")))")
        .bold()
       }
Here is the code ..

struct OrderView: View {
@State private var isOn1 = false
@State private var isOn2 = false

    var body: some View {

                 HStack {
                      Text("Grand total is :")
                            .bold()
                        Spacer()
                        if isOn2 {
                            Text("\(order.productTotal + fee.formatted(.currency(code: "GBP")))")
                                .bold()
                        } else {
                            Text("\(order.productTotal.formatted(.currency(code: "GBP")))")
                                .bold()
                        }
                    }
                    .padding(5)
}

这是屏幕截图..

enter image description here

iOS Swift SwiftUI 币种格式

评论

1赞 Teja Nandamuri 11/2/2023
尝试Text("\(order.productTotal)" + fee.formatted(.currency(code: "GBP"))) .bold()
0赞 Nus 11/2/2023
对不起,使用 + 运算符的目的是添加 order.productTotal + fee
0赞 Teja Nandamuri 11/2/2023
正如错误所说,您不能在两种不同类型的类型之间使用 +。您只能将 + 用于相同的类型 (String + String)、(Int + Int)、(Double + Double) 等

答:

1赞 DonMag 11/2/2023 #1

您需要转换为字符串,使用 并将结果转换为字符串。order.productTotal\()fee.formatted(.currency(code: "GBP"))

改变:

Text("\(order.productTotal + fee.formatted(.currency(code: "GBP")))")

自:

Text("\(order.productTotal) \(fee.formatted(.currency(code: "GBP")))")

评论

0赞 Nus 11/2/2023
抱歉,使用 + 运算符的目的是添加 order.productTotal + fee,但更改后没有添加 total order.productTotal + fee
1赞 DonMag 11/3/2023
@Nus——啊......请看邓肯的回答。另外,花点时间复习一下如何提问,以便清楚您首先要问什么:)
2赞 Duncan C 11/2/2023 #2

如果要将 order.productTotal 添加到 fee 并将总和显示为格式化字符串,请使用

Text("\((order.productTotal + fee).formatted(.currency(code: "GBP")))")
    .bold()

(将这两个值相加,然后将总和的格式设置为货币。