ios - SwiftUI 中的 NumberFormatter - 使用未解析的标识符“格式化程序”
问题描述
在我的 SwiftUI 应用程序中,我需要使用货币。我正在尝试使用 NumberFormatter,但出现错误:
使用未解析的标识符“格式化程序”
在线的:
self.valueAsString = formatter.string(for: self.value)
这是我的代码:
import SwiftUI
struct ContentView: View {
@State private var newValueAsString = ""
@State private var value: NSDecimalNumber = 0
@State private var valueAsString = "0.0"
let decimalBehavior = NSDecimalNumberHandler(roundingMode: .plain, scale: 2, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: true)
private var currencyFormat: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.usesSignificantDigits = true
formatter.minimumSignificantDigits = 1 // default
formatter.maximumSignificantDigits = 6 // default
return formatter
}()
var body: some View {
VStack {
TextField("0", text: $newValueAsString, onCommit: {
self.value = NSDecimalNumber(string: self.newValueAsString, locale: Locale.current).rounding(accordingToBehavior: self.decimalBehavior)
self.valueAsString = formatter.string(for: self.value)
// Tried this too:
// self.valueAsString = "\(formatter.string(for: self.value))"
}
)
.multilineTextAlignment(.trailing)
.font(Font.system(size: 30))
.keyboardType(.decimalPad)
// Just to test. Later I will save the value to Core Data.
Text("\(self.value)")
Text("\(self.valueAsString)")
}
.padding()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我想做的事:
- 使用 NumberFormatter 声明currencyFormat 的规则。
- 将值 (newValueAsString) 作为字符串写入 TextField。
- 提交时,newValueAsString 更改为 NSDecimalNumber 并分配给 self.value。
- 使用格式化程序规则将 NSDecimalNumber 值更改回字符串 (valueAsString)。在这里我收到一个错误。
我究竟做错了什么?
解决方案
可能你的意思是
self.valueAsString = self.currencyFormat.string(for: self.value)
推荐阅读
- node.js - 如何使用 nodejs 中的套接字建立多个客户端和服务器连接?
- terraform - Terraform:缺少必需的参数
- animation - 如何修复未在 godot 2d 中播放的翻转动画?
- sharepoint - Sharepoint Online Linkedin 连接
- c# - 如何使用 C# 为 docx 中的每个页脚自动创建
- ssms - 为什么 SSMS 不保留结果的默认目标选项?
- angular - Swiper 忽略了 ng-content
- react-native - Expo av 播放对象的 onPlaybackStatusUpdate 仅在播放/停止时调用,而不是由 progressUpdateIntervalMillis 调用间隔
- wix - 在 wix sharp 中提供运行时的安装目录位置
- python - 如何创建和序列化非托管模型 Django