当函数期望返回值时如何使用Guard

时间:2017-09-14 10:42:00

标签: swift return guard

我喜欢使用Swift的guard语句。

我还没有完全理解的一件事是如何(或者甚至)在func期间使用它来预期返回值。

简单示例:

func refreshAudioMix() -> AVPlayerItem? {
   guard let originalAsset = rootNC.lastAssetLoaded else {
         return nil
   }
   let asset = originalAsset.copy() as! AVAsset
   ..... return AVPlayerItem ....
}

这种方法的问题是我每次都需要检查返回的值。我想知道我是否正确接近这一点,或者甚至根本不需要guard

谢谢!

1 个答案:

答案 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 ....
}