Swift - SecondViewController的SecondViewController:致命错误:意外发现nil

时间:2015-01-29 23:40:32

标签: ios swift

我试图弄清楚如何在Swift中解决这个问题,我也遇到了这个错误:“致命错误:在解开一个Optional值时意外地发现了nil”。任何建议表示赞赏。感谢。

来自FirstViewController

    func getDatafromSecondViewController(myMessage: String){

         println(myMessage)

    }

来自SecondViewController

    func sendThisDataToFirstViewController() {

         let firstViewController = FirstViewController()
         firstViewController.getDatafromSecondViewController("Testing")
    }

注意:我不能使用prepareForSegue,因为我使用这些文件“class FirstViewController:UIViewController”和“class SecondViewController:NSObject”作为示例。

1 个答案:

答案 0 :(得分:1)

如果我没错,我认为通过使用那些你可以将myMessage打印到控制台,但是当你尝试使用变量时,它不起作用。如果是这种情况,我认为问题如下:

当你让firstViewController = FirstViewController()时,你正在创建一个FirstViewController类型的新视图控制器并命名为firstViewController。它只是创建,所以任何未在其中分配的变量将为nil,因此会抛出此错误。您需要对原始FirstViewController的引用。你需要一个代表来做这件事。

实现您想要做的事情的简单方法如下。 在您转到它之前,在第二个右侧分配您的第一个视图控制器:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
            if segue.identifier == "yourSegueIdentifierHere" {
                let nextViewController = segue.destinationViewController as SecondViewController
                nextViewController.myVariable = self.variableToPass
            }
}

当然,您需要在视图控制器中存在该变量,以便将其声明为靠近顶部但在类中:

var myVariable: YourTypeHere!