【问题标题】:Error with prepareForSegue “”unexpectedly found nil while unwrapping an Optional value“”prepareForSegue 出错“”在展开可选值时意外发现 nil“”
【发布时间】:2016-03-20 01:01:38
【问题描述】:

我正在尝试使用 prepareForSegue 函数将数据从一个视图控制器传递到下一个视图控制器。 当我运行应用程序并单击按钮时,我的应用程序崩溃并收到此消息“致命错误:在展开可选值时意外发现 nil”。我为 prepareForSegue 函数尝试了许多变体来传递数据,但它永远不会出现在下一个视图控制器上。

这是我的代码。第一个视图控制器:

class DiceViewController: UIViewController {

@IBAction func pressed(sender: AnyObject) {

    print("Button pressed")
    performSegueWithIdentifier("fromDice", sender: self)  
}

override func viewDidLoad() {
    super.viewDidLoad()



}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let hvc = segue.destinationViewController as? GameViewController {
        if let identifier = segue.identifier {
            switch identifier {
                case "fromDice": hvc.moveBy(2)
            default: break
            }
        }
    }
}

第二个视图控制器:

class GameViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()

}

func moveBy(moveBy: Int) {

    print("move by \(moveBy)")
    var index = moveBy - 1
    activePlayer.center = levelButtons[index].center

   }

}

控制台输出:

按下按钮

移动 2

致命错误:在展开可选值时意外发现 nil

【问题讨论】:

  • 你能告诉我这条线 activePlayer.center = levelButtons[index].center
  • 设置异常断点。查看哪条线路有问题。看看什么是零。找出原因。
  • 你好。 activePlayer 是 UIImageView 而 levelButtons 是 UIImageView 数组。像这样声明: var activePlayer: UIImageView!和 var levelButtons: [UIImageView!] = []
  • 我发现错误在哪里。我有两个segue。第一个 GameViewController 到 DiceViewController,第二个从 DiceViewController 到 GameViewController。我在 GameViewController 中有一些初始设置,当我从 DiceViewController 切换回来时,它会创建一个新的 GameViewController 实例,这就是我收到此错误的原因。有什么办法可以返回到旧的 GameViewController 实例?

标签: ios swift


【解决方案1】:

您可以通过使用 if let 语句安全地展开 levelButtons[index].center 来防止崩溃。

if let centreA = levelButtons[index].center{
    activePlayer.center = centreA
}

你需要调试为什么你会得到 nil。 希望对你有帮助

【讨论】:

    【解决方案2】:

    我实现了 unwind segue。现在我可以返回到我的旧 GameViewController 实例,它解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多