在 Xcode 中的 UILabel 上显示 Double 类型的数组

Displaying an Array of type Double on UILabel in Xcode

我正在尝试制作一个基本的购物车应用程序,您可以在其中将商品添加到购物车,将商品的成本存储在一个数组中,然后在您单击 "Receipt" 时显示该数组。但是,每次我在我的应用程序上单击 "Receipt" 时,模拟器都会崩溃并显示

"Thread1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)

在我的代码行旁边 "allItems += item"。如果有人对如何使用 for in 循环在 UILabel 中显示我的数字数组有任何想法,请告诉我。下面我将post源代码。提前致谢

class ViewController: UIViewController {

var priceOfApple = 1.75
var cart = [Double]()
var total = 0.00

@IBOutlet weak var appName: UILabel!
@IBOutlet weak var Balance: UILabel!
@IBOutlet weak var Instructions: UILabel!
@IBOutlet weak var redApple: UIButton!
@IBOutlet weak var appleInfo: UILabel!
@IBOutlet weak var addToCart: UIButton!
@IBOutlet weak var itemsPurchased: UILabel!


@IBAction func selectedApple(sender: AnyObject) {

    Instructions.hidden = true
    appleInfo.hidden = false
    addToCart.hidden = false
}

@IBAction func purchaseApple(sender: AnyObject) {

    cart.append(priceOfApple)
    total += priceOfApple
    Balance.text = "Balance : \(total)"
    Instructions.hidden = false
    appleInfo.hidden = true
    addToCart.hidden = true


}

@IBAction func viewReceipt(sender: AnyObject) {

    redApple.hidden = true
    Instructions.hidden = true
    itemsPurchased.hidden = false

    for item in cart {

        var allItems = Double(itemsPurchased.text!)!
        allItems += item
        allItems = Double(itemsPurchased.text!)!
    }
}
}

更清洁、更安全的方法:

let result = cart.flatMap { Double(itemsPurchased.text ?? String()) }.reduce(0: combine: +)

这样做,您应该不会再得到 EXC_BAD_INSTRUCTION,但您仍然应该检查文本是否可转换为 Double。

如果我没理解错的话,你应该这样做:

首先,在for循环外创建一个变量, 然后在循环中,该变量将开始存储数组中由“”分隔的每个值。完成后,您可以在标签中显示它的值。

  var itemsInCart = ""

    for items in cart{

        itemsInCart += String(items) + " "
    }

    itemsPurchased.text = itemsInCart

希望对您有所帮助!!!