我喜欢使用Swift的guard
语句。
我还没有完全理解的一件事是如何(或者甚至)在func
期间使用它来预期返回值。
简单示例:
func refreshAudioMix() -> AVPlayerItem? {
guard let originalAsset = rootNC.lastAssetLoaded else {
return nil
}
let asset = originalAsset.copy() as! AVAsset
..... return AVPlayerItem ....
}
这种方法的问题是我每次都需要检查返回的值。我想知道我是否正确接近这一点,或者甚至根本不需要guard
。
谢谢!
答案 0 :(得分:2)
我说使用后卫并没有错。当您操纵的对象有可能为零时,返回可选值似乎是公平的。
另一种方式(至少,但我现在没有看到其他人)来处理:写下你的函数可以抛出错误并在你在可选值中找到nil时抛出它在一份警卫声明中。您甚至可以创建错误,以便于阅读。你可以read more about it here
示例:
enum CustomError: Error {
case errorOne
case errorTwo
case errorThree
}
func refreshAudioMix() throws -> AVPlayerItem {
guard let originalAsset = rootNC.lastAssetLoaded else {
throw CustomError.errorOne
}
let asset = originalAsset.copy() as! AVAsset
..... return AVPlayerItem ....
}