Сумма целых чисел со строкой в ​​Swift - PullRequest
0 голосов
/ 10 марта 2020

У меня есть одно текстовое поле. Текст моего текстового поля - это число с currencyFormatter. Текст моего текстового поля похож на "100,000". Теперь я хочу суммировать этот текст textField с 1000, но я не могу. Я использую функцию currencyFormatter (), например, self.textField.text = 100000.currencyFormatter ()

Моя функция:

extension Int {
    func currencyFormatter() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.maximumFractionDigits = 0

        if let result = formatter.string(from: NSNumber(value: self))
        {
            return result;
        }

        return String(self);
    } }

    func sum(){
        let firstValue = Int(txtAmount.text!)
        let secondValue = 1000
        if firstValue != nil {
            let outputValue = Int(firstValue! - secondValue)
            self.txtAmount.text = "\(outputValue)"
        }
        else{
            self.txtAmount.text = "\(firstValue!)"
        }       
    }

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Вы должны использовать один и тот же экземпляр NumberFormatter для преобразования в обоих направлениях

Итак, вот форматер, как вы уже настроили его

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 0

Затем напишите функцию, которая добавляет int для целого числа, представленного в виде строки

func add(_ value: Int, to stringValue: String) -> Int {
    if let converted = formatter.number(from: stringValue) {
        return value + converted.intValue
    }

    return value // or throw an error or return nil...
}

Затем используйте его как

if let textValue = self.txtAmount.text, !text.isEmpty {
    newValue = add(1000, to: textValue)
    self.txtAamount.text = formatter.string(from: NSNumber(value: newValue)) ?? ""
}
0 голосов
/ 10 марта 2020

Может быть, вы должны научиться использовать NumberFormatter.

Вот код

func sumStrAndDouble(str: String?, num: Double) -> String {
    guard let str = str else {
        return String(num)
    }
    let formatter = NumberFormatter()
    formatter.numberStyle = .decimal
    let transferStr = formatter.number(from: str)
    let sum = (transferStr as? Double) ?? 0 + num
    let _res =  formatter2.string(from: NSNumber(value: sum))
    return _res ?? ""
}

let a = sumStrAndDouble(str: "100,100", num: 1000) // 100,100

Для вас вы можете использовать как

let res = sumStrAndDouble(str: self.textField.text, num: 1000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...