我有以下警卫片段,它产生的错误是“警卫体可能无法通过”。怎么了?
guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else {
print("App bundle doesnt exist")
}
答案 0 :(得分:48)
guard
语句需要有一些东西可以使程序的流程远离封闭范围(例如,最有可能的情况是return
从函数返回)。这是必需的,因为守卫守卫的条件无效,所以程序流程需要去其他地方!
保护声明的else子句是必需的,必须要么调用 标有noreturn属性或传输程序的函数 使用其中一个来控制守卫声明的封闭范围 以下陈述:
- 返回
- 休息
- 继续
- 掷
答案 1 :(得分:1)
考虑使用wait.Until((d) => { return JavascriptInjector.GetDocumentReadyState(d) == expectedReadyState; });
声明
返回语句出现在函数或方法定义的主体中,并导致程序执行返回到调用函数或方法。
答案 2 :(得分:0)
以下是上述答案中解释的内容的示例,以使其更加清晰。
守卫声明在更多的程序范围内。
guard false else {
print("Condition is not true ")
}
print("Condition met")
此代码生成此错误语句
错误:如果是guard statement.playground:1:1:错误:'警卫'身体可能没有 通过,考虑使用' return'或者'扔掉'退出范围
简单的错误信息意味着,您需要使用return,break,continue或throw语句从guard语句传输程序控制。
带回程转移控制声明
guard false else {
print("Condition is not true")
return
}
print("Condition met")
在控制台中输出
满足条件