Найдено ноль при развертывании необязательного значения в основных данных - PullRequest
0 голосов
/ 17 сентября 2018

Я пытался решить эту проблему в течение нескольких дней, и, кажется, я иду только кругами.

Я добавляю данные в базовые данные, нажимая на 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 голосов
/ 17 сентября 2018

Вам нужно изменить

var myCart: Cart! 

на

var myCart: Cart?

?использовать, чтобы сделать его необязательным.И во ViewDidLoad вместо

showMeTheGoodiesTwo(entry: myCart)
используйте
if (myCart != nil){
            showMeTheGoodiesTwo(entry: myCart)
        } else {
            //do something.
        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...