Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自动添加千位分隔符(Swift)_Ios_Swift_Xcode - Fatal编程技术网

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

Ios 自动添加千位分隔符(Swift),ios,swift,xcode,Ios,Swift,Xcode,我有一个计算器的代码 我怎么能这样做,当用户输入数字时,他会自动被一个空格隔开 很长时间以来,我一直在寻找答案,但没有一个答案适合立即显示出来 这就是s的用途 请注意,NumberFormatters是双向的,您也可以(可能应该)使用它们来解析字符串中的数字 请注意,NumberFormatters是双向的,您也可以(也可能应该)使用它们来解析字符串中的数字最好将值累积到一个没有应用格式的单独字符串中,而不是使用文本字段作为数据模型。然后,您可以根据需要使用NumberFormatter格式

我有一个计算器的代码

我怎么能这样做,当用户输入数字时,他会自动被一个空格隔开

很长时间以来,我一直在寻找答案,但没有一个答案适合立即显示出来


这就是s的用途

请注意,
NumberFormatter
s是双向的,您也可以(可能应该)使用它们来解析字符串中的数字


请注意,
NumberFormatter
s是双向的,您也可以(也可能应该)使用它们来解析字符串中的数字

最好将值累积到一个没有应用格式的单独字符串中,而不是使用文本字段作为数据模型。然后,您可以根据需要使用
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)
}
let格式化程序:NumberFormatter={
let formatter=NumberFormatter()
formatter.numberStyle=.decimal
返回格式化程序
}()
var currentInput:String=“0”{
迪塞特{
self.displayResultLabel?.text=self.currentDisplay
}
var电流值:双{
返回双(自电流输入)??0
}
var currentDisplay:字符串{
返回格式化程序.string(from:NSNumber(值:self.currentValue))??“0”
}
func addDigit(digit:Int){
如果currentInput.count<14{
设newValue=self.currentValue*10+两位数
self.currentInput=“\(newValue)”
}
}
@iAction func编号已显示(\发送方:UIButton){
guard let digit=Int(sender.currentTitle!)其他{
返回
}
self.addDigit(数字)
}

最好将值累加到一个不应用格式的单独字符串中,而不是使用文本字段作为数据模型。然后,您可以使用
数字格式设置十进制的格式,并根据需要将其显示在标签中

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)
}
let格式化程序:NumberFormatter={
let formatter=NumberFormatter()
formatter.numberStyle=.decimal
返回格式化程序
}()
var currentInput:String=“0”{
迪塞特{
self.displayResultLabel?.text=self.currentDisplay
}
var电流值:双{
返回双(自电流输入)??0
}
var currentDisplay:字符串{
返回格式化程序.string(from:NSNumber(值:self.currentValue))??“0”
}
func addDigit(digit:Int){
如果currentInput.count<14{
设newValue=self.currentValue*10+两位数
self.currentInput=“\(newValue)”
}
}
@iAction func编号已显示(\发送方:UIButton){
guard let digit=Int(sender.currentTitle!)其他{
返回
}
self.addDigit(数字)
}

出现错误-实例成员'numberStyle'不能用于'NumberFormatter'类型抱歉。我忘记了实际实例化它的参数:P在他开始输入8888(更改为888)后,我的机器上现在编译了一个类似的示例,出现了一个错误-“线程1:致命错误:在展开可选线程时意外发现nil”,Xcode要求更改此行,如“displayResultLabel.text=formatter.string(from:newNumber as!NSNumber)"我再一次更新了上面的代码,以包含一个
NSNumber
实例化,因为这就是
NumberFormatter
s acceptError出现的原因-实例成员'numberStyle'不能用于'NumberFormatter'类型对不起。我忘记了实际实例化它的参数:P在他开始输入888(更改为888),出现错误-“线程1:致命错误:在展开可选项时意外发现零”,Xcode要求更改此行,如“displayResultLabel.text=formatter.string(发件人:newNumber as!NSNumber)”我再次更新了上面的代码,以包含一个
NSNumber
实例化,因为这是
NumberFormatter
s接受的
var stillTyping = false
var dotIsPlaced = false
var firstOperand: Double = 0
var secondOperand: Double = 0
var operationSign: String = ""
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let newNumber = formatter.number(from: displayResultLabel.text! + number){
    displayResultLabel.text = formatter.string(from: newNumber)
}
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)
}