0

我试图能够将 price(1-3) 标签中的数据乘以 counterValue 以显示所选每个选项的价格

到目前为止,我的代码可以在选择时将counterValue乘以所选 optionBtn(1-3)的因子

我试图做的是将计数器值乘以价格标签的标签数据

所有价格标签都是浮点数我尝试使用此代码Int(Float(modifyItems.cart.price1))替换“if 语句”中的因子变量,但仍然没有成功

旁注:在 ModifyVC 中填充标签的数据是从另一个 VC 传递的。委托将数据传递到 ModifyVC 并从云 Firestore 中检索数据(如 viewDidLoad 中所示)

提前感谢您提供的任何帮助

class ModifyViewController: UIViewController {

    private var counterValue = 1
    var lastSelectedWeightButton = RoundButton()
    var modifyItems: Cart!

    @IBOutlet weak var price1: UILabel!
    @IBOutlet weak var price2: UILabel!
    @IBOutlet weak var price3: UILabel!
    @IBOutlet weak var weight1: UILabel!
    @IBOutlet weak var weight2: UILabel!
    @IBOutlet weak var weight3: UILabel!

    @IBOutlet weak var lblQty: UILabel!
    @IBOutlet weak var modifyTotal: UILabel!

    @IBOutlet weak var option1: RoundButton!
    @IBOutlet weak var option2: RoundButton!
    @IBOutlet weak var option3: RoundButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.

        let formatter = NumberFormatter()
        formatter.maximumFractionDigits = 2
        formatter.numberStyle = .decimal
        price1.text = "$\(formatter.string(for: modifyItems.cart.price1)!)"
        price2.text = "$\(formatter.string(for: modifyItems.cart.price2)!)"
        price3.text = "$\(formatter.string(for: modifyItems.cart.price3)!)"
        weight1.text = modifyItems.cart.weight1
        weight2.text = modifyItems.cart.weight2
        weight3.text = modifyItems.cart.weight3

    }

    @IBAction func minusQty(_ sender: AnyObject) {
         if(counterValue != 1){
            counterValue -= 1
         }
         self.lblQty.text = "\(counterValue)"
         var factor = 1
         if option1.isSelected {
            factor = 13
        } else if option2.isSelected {
            factor = 39
        } else if option3.isSelected {
            factor = 72
        }
        modifyTotal.text = "$\(factor * counterValue)"
        print("Decrease Quantity")
    }
}

class Cart {
    var cart: Items!

    init(cart: Items) {

        self.cart = cart
    }
}
4

2 回答 2

1

您只需将标签数据存储到(Int 或 Float)。

var total = 0
if modifyTotal.text != " " {
  total = Int(modifyTotal.text.replacingOccurrences(of: "$", with: ""))!
}
let finalTotalValue = total + (factor * CounterValue)
modifyTotal.text = "$\(finalTotalValue)"
于 2019-11-25T06:40:47.167 回答
0

您可以使用 NSExpression 来评估您的表达式,例如

let nExpression = "1 * 5"
let expression = NSExpression(format: nExpression)
var result = expression.expressionValue(with: nil, context: nil) as? Int 
于 2019-11-25T10:14:01.860 回答