【问题标题】:How can we check NSURL variable is nil or not before using it?我们如何在使用之前检查 NSURL 变量是否为零?
【发布时间】:2015-11-14 08:15:14
【问题描述】:

我们定义了一个 NSURL 变量为

var audioURL_iPOD: NSURL?

在我们用来获取歌曲网址的部分代码中

    let audioItem    = selectedAudio.objectAtIndex(0)
     audioURL_iPOD   = audioItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL

在我们代码的另一个地方,我们必须检查 audioURL_iPOD 是否为 nil。但是

       if audioURL_iPOD?.absoluteString == nil {  do something    }

没有像往常一样工作并返回

      fatal error: unexpectedly found nil while unwrapping an Optional value

所以我们必须做一些更复杂的事情,除非我们能够找到一种方法来检查 audioURL_iPOD 是否为 nil。

【问题讨论】:

  • “没有工作”是什么意思?即使 URL 是 nil,该块是否也会运行?
  • 有时候是男人太累了……

标签: swift2 nsurl


【解决方案1】:

您使用可选绑定检查nil

if let absStr = audioURL_iPOD?.absoluteString {  
 // do something with absStr being NOT nil
} else {
 // do something with absStr being nil
}

【讨论】:

  • if let something = etc { } 有点不寻常,但对我来说什么都行。谢谢。
【解决方案2】:

你也可以

guard let safeAudioURLiPod = audioItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL else { 
    /* exit scope by returning or throwing */ 
}

然后继续使用 safeAudioURLiPod,就好像它不是可选的一样

示例:safeAudioURLiPod.absoluteString 没有可选链

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多