在 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
希望对您有所帮助!!!
我正在尝试制作一个基本的购物车应用程序,您可以在其中将商品添加到购物车,将商品的成本存储在一个数组中,然后在您单击 "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
希望对您有所帮助!!!