【发布时间】:2016-08-09 18:46:07
【问题描述】:
我正在尝试制作一个基本的购物车应用程序,您可以在其中将商品添加到购物车中,将商品的成本存储在数组中,然后在单击“收据”时显示数组。但是,每次我在我的应用上单击“收据”时,模拟器都会崩溃并显示
"Thread1: EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0)
在我的“allItems += item”代码行旁边。如果有人对如何使用 for in 循环在 UILabel 中显示我的数字数组有任何想法,请告诉我。我将在下面发布源代码。在此先感谢
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!)!
}
}
}
【问题讨论】:
-
item in cart循环的主体非常混乱。在每次迭代中,您将创建一个带有标签内容的新变量allItems,然后添加item,最后将变量设置回标签的内容。除了混淆之外,itemsPurchased.text是nil或者文本不能用Double表示。 -
我在每次迭代中创建变量 allItems 因为我希望显示数组中的所有项目。有没有更好的方法可以做到这一点?
-
这段代码有两个严重的问题。更糟糕的是,该变量在循环范围之外不可见,并且您正在用新值永久覆盖以前的值。您应该在重复循环之前创建变量。将代码粘贴到 Playground 中并进行测试。
标签: swift for-loop for-in-loop