gpt4 book ai didi

swift - 使用状态变量更新计算属性

转载 作者:行者123 更新时间:2023-11-28 13:27:23 24 4
gpt4 key购买 nike

我有以下场景:我正在创建一个 Form,用户可以在其中的 TextField 中输入金额。此外,用户可以通过 Picker 选择货币。金额使用 NumberFormatter 格式化,我想在用户更改货币时更新文本。

@State private var currencyCode = "EUR"

这是格式化程序:

private let currencyFormatter: NumberFormatter = {
var formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = $currencyCode // something like this, but that's not working!
return formatter
}()

表单如下所示:

Form {
Section {
TextField("Enter a description", text: $reason)
TextField("Amount", value: $amount, formatter: currencyFormatter)
.keyboardType(.decimalPad)
}

Section {
Picker(selection: $currencyCode, label: Text("Currency")) {
ForEach(codes, id: \.self) { code in
Text(code)
}
}
}
}

最佳答案

首先,您需要删除 $ . $currencyCode给你一个 Binding<String> ,但您想要值,而不是值的绑定(bind)。 (参见 this answer 我解释绑定(bind)的地方。)

其次,您想使用计算属性,因为您的数字格式化程序需要根据您选择的 currencyCode 进行更改。 .把它放在你的 View 结构中:

private var currencyFormatter: NumberFormatter {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencyCode = currencyCode
return formatter
}

关于swift - 使用状态变量更新计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com