Swift 错误:防护体不能通过
Posted
技术标签:
【中文标题】Swift 错误:防护体不能通过【英文标题】:Swift error: guard body must not fall through 【发布时间】:2015-06-30 12:25:23 【问题描述】:我有以下guard
语句,它会产生错误。怎么了?
guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else
print("App bundle doesn't exist")
错误:“守卫”身体可能不会掉落
错误:'guard' body 不能通过,考虑使用 'return' 或 'throw' 退出范围
【问题讨论】:
也许您愿意为不赞成票发表评论?这个答案显然帮助了一些人...... 【参考方案1】:guard
语句需要有一些东西来使程序流远离封闭范围(例如,最有可能的情况是 return
从函数返回)。这是必需的,因为守卫正在守卫的条件将无效,因此程序流程需要转到其他地方!
Documentation:
guard 语句的 else 子句是必需的,并且必须调用 用 noreturn 属性或传输程序标记的函数 使用其中之一控制守卫语句的封闭范围之外 以下陈述:
返回 打破 继续 投掷
【讨论】:
调用一个返回 Never 的函数,比如 fatalError,是另一种选择。【参考方案2】:以下是上述答案中解释的示例,以使其更清楚。
在更外部的程序范围内声明。
guard false else
print("Condition is not true ")
print("Condition met")
这段代码产生了这个错误语句
error: If guard statement.playground:1:1: error: 'guard' body may not 失败,考虑使用 'return' 或 'throw' 退出范围
简单的错误信息的意思是,您需要使用return、break、continue或throw语句将程序控制权从guard语句转移。
带有返回传输控制语句
guard false else
print("Condition is not true")
return
print("Condition met")
控制台输出
条件满足
【讨论】:
【参考方案3】:考虑使用return
语句
return 语句出现在函数或方法定义的主体中,并导致程序执行返回到调用函数或方法。
【讨论】:
以上是关于Swift 错误:防护体不能通过的主要内容,如果未能解决你的问题,请参考以下文章
在我的 swift SpriteKit 游戏中,物理体的轮廓通过所有其他节点显示