【问题标题】:Xcode unexpectedly found nil while unwrapping an Optional, but no idea whyXcode 在展开 Optional 时意外发现 nil,但不知道为什么
【发布时间】:2019-01-18 18:13:14
【问题描述】:

Xcode 给了我以下错误,但我不知道这是从哪里来的。我打印了elpasedTime 值,它包含值! 但它仍然说它在展开时发现 nil 并且我不知道为什么会发生这种情况,因为它没有告诉我在哪里。

这可能哪里出错了??

函数stringFromTimeInterval如下

extension TimeInterval {

func stringFromTimeInterval() -> String {

    let time = NSInteger(self)

    //        let ms = Int((self.truncatingRemainder(dividingBy: 1)) * 1000)
    let seconds = time % 60
    let minutes = (time / 60) % 60
    let hours = (time / 3600)
    print("5 here?")
    return String(format: "%0.2d:%0.2d:%0.2d",hours,minutes,seconds)

}

}

【问题讨论】:

  • 您的问题与您的stringFromTimeInterval 函数无关。崩溃的是 ViewController().timeLeft 访问。
  • 您为什么要尝试创建和使用这样的新视图控制器?毫无意义。你创建它,尝试(糟糕地)初始化它,然后你把它扔掉而不用。你到底想做什么?
  • 在这两个地方你都有ViewController().timeLeft.text删除timeLeft之前的所有内容以使其成为timeLeft.text。根据您调用它的时间,timeLeft 可能仍然为零,但不会持续很长时间。
  • @Leonard,永远不要试图惹恼业主以外的渠道。 Xcode 应该将它们全部标记为private,这样人们就不会犯这种错误。
  • 作为记录,正如@rmaddy 指出的那样,ViewController() 创建了该类的 new 实例,因此即使 timeLeft不是零,它不会做你想做的事。

标签: swift null optional unwrap


【解决方案1】:

解决了。

正如 cmets 所指出的,问题在于我没有正确访问 ViewController。

为了在 ViewController 类之外访问我的 ViewController,我正在通过 ViewController() 创建它的一个新实例。

我通过将函数放入类中并将ViewController() 部分更改为self.ViewController 来解决它。

这个答案也对我有帮助。 https://stackoverflow.com/a/45932084/7414387

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多