我们如何在使用前检查 NSURL 变量是否为 nil?

How can we check NSURL variable is nil or not before using it?

我们将 NSURL 变量定义为

var audioURL_iPOD: NSURL?

在代码的一部分中,我们曾经使用

获取一首歌曲 url
    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

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

你也可以

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

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

示例:safeAudioURLiPod.absoluteString 没有可选链