奇怪的`致命错误:意外地发现了nil`但是可选的DOES有一个值

时间:2018-01-12 13:10:00

标签: swift crash

我在使用带有值的变量中的字符串更新label.text时,我的应用中遇到了一个奇怪的崩溃。

if WalletViewController.currencyUSD == true {
                MainViewController.bitcoinDoublePrice = Double((bitcoinInfo.raw.btc.usd?.price)!)
                print("MainViewController.bitcoinDoublePrice =", MainViewController.bitcoinDoublePrice)
                let formatter = NumberFormatter()
                formatter.numberStyle = .currency
                formatter.locale = Locale(identifier: "en_US")
                let bitcoinStringPrice = formatter.string(from: NSNumber(value: MainViewController.bitcoinDoublePrice))
                print("bitcoinStringPrice =", bitcoinStringPrice!)
                if let bitcoinPrice = bitcoinStringPrice {
                    MainViewController().bitcoinPriceLabel.text = String(bitcoinPrice + ", ") //<<<Thread 3: Fatal error: Unexpectedly found nil while unwrapping an Optional value
                } else {
                    print("bitcoinPrice = nil")
                }
            }

一些截图:

Code

Console

我无法弄清楚这里发生了什么

2 个答案:

答案 0 :(得分:1)

您在绘制之前指定了bitcoinPriceLabel值。

这不是价值。

答案 1 :(得分:0)

您正在错误发生的行中初始化 MainViewController的新实例

查看控制器在初始化后不会直接安装其插座,因此bitcoinPriceLabel将为零。

MainViewController()更改为您当前正在使用的实例,因此它将引用应用程序中可见的视图控制器的标签(在此示例中为mainVc):

mainVc.bitcoinPriceLabel.text = String(bitcoinPrice + ", ")

详细了解视图控制器生命周期here