Swift2 在使用NSURL变量之前,我们如何检查它是否为零?

Swift2 在使用NSURL变量之前,我们如何检查它是否为零?,swift2,nsurl,Swift2,Nsurl,我们将NSURL变量定义为 var audioURL_iPOD: NSURL? 在代码的一部分中,我们使用 let audioItem = selectedAudio.objectAtIndex(0) audioURL_iPOD = audioItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL 在代码的另一个地方,我们必须检查audioURL_iPOD是否为零。但是 if audi

我们将NSURL变量定义为

var audioURL_iPOD: NSURL?
在代码的一部分中,我们使用

    let audioItem    = selectedAudio.objectAtIndex(0)
     audioURL_iPOD   = audioItem.valueForProperty(MPMediaItemPropertyAssetURL) as? NSURL
在代码的另一个地方,我们必须检查audioURL_iPOD是否为零。但是

       if audioURL_iPOD?.absoluteString == nil {  do something    }
没有像往常一样工作,就回来了

      fatal error: unexpectedly found nil while unwrapping an Optional value

因此,我们必须做一些更复杂的事情,除非我们能够找到检查audioURL\u 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
不带可选链

你说的“不工作”是什么意思?当URL为
nil
时,块是否运行?有时是一个男人太累了…如果让某物=etc{}是一种不寻常的行为,但无论我做什么都可以。谢谢