【问题标题】:Swift - SecondViewController to FirstViewController: fatal error: unexpectedly found nilSwift - SecondViewController 到 FirstViewController:致命错误:意外发现 nil
【发布时间】:2016-06-23 02:49:34
【问题描述】:

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

来自 FirstViewController

    func getDatafromSecondViewController(myMessage: String){

         println(myMessage)

    }

来自 SecondViewController

    func sendThisDataToFirstViewController() {

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

注意:我不能使用 prepareForSegue,因为我以“class FirstViewController: UIViewController”和“class SecondViewController: NSObject”为例。

【问题讨论】:

  • 这两个控制器如何进入屏幕?这一行, let firstViewController = FirstViewController() 正在创建一个新的 FirstViewController 实例,它不是你在屏幕上拥有/拥有的那个。
  • 你的代码对我来说很好:)
  • 看不出这段代码会导致这个错误的任何原因。
  • @rdelmar 我无法使用 prepareForSegue,因为我使用的是“class FirstViewController: UIViewController”和“class SecondViewController: NSObject”这些文件。

标签: ios swift


【解决方案1】:

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

当您使用 let 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!

【讨论】:

  • 我无法使用 prepareForSegue,因为我使用的是“class FirstViewController: UIViewController”和“class SecondViewController: NSObject”这些文件
  • 刚刚修好了。你说得对,缺少代表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多