我正在尝试将数据从我的第一个ViewController发送到第二个。
使用简单的Int可以正常工作但是使用这个Double它不起作用,我不明白为什么。所以如果你能解释为什么它不起作用那就很酷了!
我在第一个ViewController中的声明:
var time: Double? = 0.00
然后我尝试将它发送到我的其他ViewController:
let vc = segue.destination as! MySecondViewController
vc.rows = rows[pathForAVC]
vc.lap = lap[pathForAVC]
vc.indexPath = pathForAVC
vc.time = rows[pathForAVC]["Time"]! as! Double
致命错误:在解包可选值时意外发现nil
我的第二个ViewController:
var time: Double? = 0.00
topLabel.text = "\(time!)"
N.B:
行是Dictionnary:
var rows: [[String : AnyObject]] = [[:]]
我真的不明白我的错误......
答案 0 :(得分:3)
问题在于你强行打开一个可能不存在的值:
vc.time = rows[pathForAVC]["Time"]! as! Double
如果rows[pathForAVC]["Time"]!
为零,则您的应用程序将崩溃。您应该确实避免使用!
,除非您的应用程序只是无法继续运行而没有该值。这些情况应该罕见。
您应该使用if let
语句安全地展开您的值:
if let unwrappedTime = rows[pathForAVC]["Time"] as? Double {
print(unwrappedTime)
}
(我现在不在Xcode附近,但上面的代码应足够接近,以便从编译器获得有价值的提示。)
如果您需要进一步澄清,请与我们联系。