gpt4 book ai didi

ios - 自动添加千位分隔符(Swift)

转载 作者:行者123 更新时间:2023-11-28 12:13:43 26 4
gpt4 key购买 nike

我有计算器的代码

我怎样才能让用户输入数字时自动用空格分隔?

长期以来我一直在努力寻找答案,但没有合适的立即显示


gif

var currentInput: Double {
get {
return Double (displayResultLabel.text!)!
}
set {
let value = "\(newValue)"
let ValueArray = (value.components(separatedBy:"."))
if ValueArray[1] == "0" {
displayResultLabel.text = "\(ValueArray[0])"
} else {
displayResultLabel.text = "\(newValue)"
}
stillTyping = false
}
}
@IBAction func numberPressed(_ sender: UIButton) {
let number = sender.currentTitle!

if stillTyping {
if (displayResultLabel.text?.characters.count)! < 14 {
displayResultLabel.text = displayResultLabel.text! + number
}
} else {
displayResultLabel.text = number
stillTyping = true
}
}

然后发生了什么:

@IBAction func numberPressed(_ sender: UIButton) {
let number = sender.currentTitle!

if stillTyping {
if (displayResultLabel.text?.characters.count)! < 14 {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
let newNumber = NSNumber(value: Double(displayResultLabel.text! + number)!)

displayResultLabel.text = formatter.string(from: newNumber)
}
} else {
displayResultLabel.text = number
stillTyping = true
}
}

错误 enter image description here

var stillTyping = false
var dotIsPlaced = false
var firstOperand: Double = 0
var secondOperand: Double = 0
var operationSign: String = ""

最佳答案

最好将您的值累积在未应用格式的单独字符串中,而不是使用文本字段作为您的数据模型。然后,您可以使用 NumberFormatter 格式化小数并将其显示在标签中:

let formatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
return formatter
}()

var currentInput: String = "0" {
didSet {
self.displayResultLabel?.text = self.currentDisplay
}

var currentValue: Double {
return Double(self.currentInput) ?? 0
}

var currentDisplay: String {
return formatter.string(from: NSNumber(value:self.currentValue)) ?? "0"
}

func addDigit(_ digit: Int) {
if currentInput.count < 14 {
let newValue = self.currentValue * 10 + Double(digit)
self.currentInput = "\(newValue)"
}
}

@IBAction func numberPressed(_ sender: UIButton) {
guard let digit = Int(sender.currentTitle!) else {
return
}

self.addDigit(digit)
}

关于ios - 自动添加千位分隔符(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47616227/

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