解开核心数据中的可选值时发现nil

时间:2018-09-17 00:20:49

标签: ios swift core-data

几天来我一直在努力解决这个问题,看来我只是转圈而已。

我通过点击tableView单元格,然后在另一个tableView上显示项目,将数据添加到核心数据中。

那很好,问题是这样的:

当我单击其他表视图行时,为了能够看到包含所有其他值存储在核心数据中的项目,我得到了

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value on the showMeTheGoodiesTwo(entry: myCart) line 

...在viewDidLoad内部。但是我不知道为什么会这样,因为实体不是空的。

这是我要在其中显示项目详细信息的视图控制器的代码。

希望有人可以帮我

干杯!

import UIKit

class productQuantityViewController: UIViewController {

    var myCart: Cart!

    @IBOutlet weak var productImage: UIImageView!
    @IBOutlet weak var productNameLabel: UILabel!
    @IBOutlet weak var productDescriptionLabel: UILabel!
    @IBOutlet weak var productAmountLabel: UITextField!
    @IBOutlet weak var minusButton: UIButton!
    @IBOutlet weak var plusButton: UIButton!


    override func viewDidLoad() {
        super.viewDidLoad()

        productImage.layer.cornerRadius = 10
        minusButton.layer.cornerRadius = minusButton.frame.size.width/2
        plusButton.layer.cornerRadius = plusButton.frame.size.width/2

        showMeTheGoodiesTwo(entry: myCart)

    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func showMeTheGoodiesTwo(entry: Cart) {

        let name = entry.product
        let quantity = entry.inventory
        let description = entry.productDescription

        let image = entry.productImage as Data?
        let xNSNumber = quantity as NSNumber

        productNameLabel!.text = name
        productDescriptionLabel!.text = description
        productAmountLabel!.text = xNSNumber.stringValue
        productImage!.image = UIImage(data:image!)

        print(productNameLabel.text as Any)

    }


}

1 个答案:

答案 0 :(得分:0)

您需要更改

var myCart: Cart! 

收件人

var myCart: Cart?

?用于使其可选。 并在viewDidLoad中使用

if (myCart != nil){
            showMeTheGoodiesTwo(entry: myCart)
        } else {
            //do something.
        }

代替

showMeTheGoodiesTwo(entry: myCart)