在2个ViewControllers之间传递数据

时间:2017-07-21 13:08:05

标签: ios swift uiviewcontroller

我正在尝试将数据从我的第一个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]] = [[:]]

我真的不明白我的错误......

1 个答案:

答案 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附近,但上面的代码应足够接近,以便从编译器获得有价值的提示。)

如果您需要进一步澄清,请与我们联系。