在展开可选值时意外发现 nil

Posted

技术标签:

【中文标题】在展开可选值时意外发现 nil【英文标题】:unexpectedly found nil while unwrapping an Optional value 【发布时间】:2017-05-09 10:06:20 【问题描述】:

我把m3u8放在GCDWebServer里播放。当我使用 Wi-Fi 时,没问题。但是使用4G,就出现了这个问题。

【问题讨论】:

使用if let 安全地解开选项 【参考方案1】:

您在代码中强制解包 m3u8。如果那是nil,你就会遇到问题。您是说当您使用! 强制展开时它永远不会为零。

您可以使用if let 方法,也可以测试nil

// Are you sure dataServer isn't nil too here?
if let serverAddress = dataServer!.serverURL.URLByAppendingPathComponent(self.m3u8) 
    //Should be safe

或者

if m3u8 == nil 
    print("m3u8 is nil")
    return

【讨论】:

【参考方案2】:

我已经解决了问题。当我使用4g时,访问dataServer!ServerURLnil。我的解决方法是给它一个本地IP

 if davServer?.serverURL == nil 
                serverAddress = NSURL.init(string: "http://localhost/playts.m3u8")!
            else
               serverAddress = (davServer?.serverURL.URLByAppendingPathComponent(self.m3u8!))!
            

【讨论】:

以上是关于在展开可选值时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire:在展开可选值时意外发现 nil

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

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

Alamofire 平面错误:在展开可选值时意外发现 nil

prepareForSegue 出错“”在展开可选值时意外发现 nil“”

在展开可选值时迅速并意外发现 nil