我们如何在使用前检查 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
没有可选链
我们将 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
没有可选链