首页 > 解决方案 > 仅对字符串中的数字求和 - Swift

问题描述

我有一个标签,它有数字、美元符号,我有一个 UIStepper 可以增加和减少数字。我面临的问题是它无法将数字与美元符号相加,而我想要的是将数字与美元符号相加。

import UIKit
import GMStepper

class ViewController: UIViewController {


@IBOutlet var stepper: GMStepper!
@IBOutlet var priceLabel: UILabel!
var price: Double = 5.500


override func viewDidLoad() {
    
    super.viewDidLoad()
    
    priceLabel.text = "5.5 $"
    
}


@IBAction func stepper(_ sender: Any) {
    
    let newValue =  price * stepper.value
    let priceS = String(format: "%.3f", newValue)
    priceLabel.text = "\(priceS) $"

   }
}

标签: arraysswift

解决方案


首先,让我们将货币价值String正确转换为 a。

第二件事是忘记尝试将String用于任何事情。考虑格式化字符串是仅显示的。不要试图将它们转换为数字。相反,将必要的值保留为数字。

class ViewController: UIViewController {
   private lazy var formatter: NumberFormatter = {
       let numberFormatter = NumberFormatter()
       numberFormatter.locale = Locale(identifier: "en_US")
       numberFormatter.numberStyle = .currency
       numberFormatter.currencyCode = "USD"
       numberFormatter.minimumFractionDigits = 3
       numberFormatter.maximumFractionDigits = 3

       return numberFormatter
   }()

   var originalPrice: Double = 5.5
   private var price = originalPrice

   private func updateText() {
      priceLabel.text = formatter.string(for: price)
   }

   override func viewDidLoad() {
      super.viewDidLoad();

      updateText()
   }

   @IBAction func stepper(_ sender: Any) { 
      // do any calculation here using price and stepper.value
      price = originalPrice * stepper.value
      updateText()
   }
}

推荐阅读