当前位置: 首页 > 知识库问答 >
问题:

迅捷错误:护体不得脱落

王俊哲
2023-03-14

我有以下保护语句,它产生了一个错误。怎么了?

guard NSFileManager.defaultManager().fileExistsAtPath(appBundlePath) else {
    print("App bundle doesn't exist")
}

错误:“防护”体可能无法通过

错误:“保护”主体不能失败,考虑使用“返回”或“抛出”退出范围

共有3个答案

郭阳曜
2023-03-14

考虑使用< code>return语句

return语句出现在函数或方法定义的主体中,并导致程序执行返回到调用函数或方法

宋琛
2023-03-14

以下是上述答案中解释的示例,以使其更清晰。

在计划的更外部范围内的保护声明。

guard false else {
    print("Condition is not true ")
}
print("Condition met")

此代码产生此错误语句

错误:如果保护statement.playground:1:1:错误:“保护”主体可能无法通过,请考虑使用“返回”或“抛出”退出范围

简单的错误消息意味着,您需要使用返回、中断、继续或抛出语句从保护语句中转移程序控制。

with返回转移控制语句

guard false else {
    print("Condition is not true")
    return
}
print("Condition met")

控制台中的输出

条件满足

赫连永怡
2023-03-14

guard语句需要有一些东西,将程序流从封闭范围中带走(例如,最可能的情况是returnto return from The function)。这是必需的,因为保护正在保护的条件将无效,所以程序流需要转到其他地方!

文档:

保护语句的else子句是必需的,并且必须调用标有noback属性的函数,或者使用以下语句之一将程序控制转移到保护语句的封闭范围之外:

  • 返回
  • 打破
  • 继续
  • 投掷
 类似资料:
  • 问题内容: 我正在尝试编写一个快速的iOS应用程序,它将记录用户的声音。我已经迅速编写了以下代码,但是无法从用户那里请求麦克风权限。它可以正常打印,但从不记录音频,并且在“隐私”下的“设置”窗格中未列出该应用程序。如何快速请求录制权限? 问题答案: 从iOS 7开始,您需要检查它是否响应选择器 我已经使用带有 iOS 8 Beta* 的 iPhone 5S 测试了此代码,它可以完美运行。授予权限后

  • 问题内容: Swift中“ with”关键字的目的是什么?到目前为止,我发现如果需要覆盖现有的全局函数(例如toDebugString),则可以使用关键字。 问题答案: 是 不是 一个关键字-它只是一个外部的参数标识。这也可以: 由于已经定义了函数,因此通过使用外部参数,您将创建 重载 :相同的函数名称,但参数不同。在这种情况下,参数是相同的,但是用一个外部名称标识,并且迅速使它成为具有不同签名的

  • 但还是不行,怎么了?我真的不明白我能做什么。PS为了优化我的文件,你有什么建议吗?提前道谢。

  • 问题内容: 我正在创建一个简单的音频编辑工具来修剪和删除音频。我实现了修剪功能,并且工作正常。但是我搜索并尝试实现删除功能,这是我的代码: 我在这里正在创建2个范围。从0-> time1的Range1和从time2-> endOfAudio的Range2。(我想从时间1->时间2中删除) 然后我在2个范围之间创建并集。但是,音频没有任何反应。它的保存与该功能之前的保存完全相同。 问题答案: 返回a

  • 问题内容: 如何轻松将元素添加到字典中的数组?总是抱怨或 如果我只是将数组分配给var,先对其进行修改,然后再将其重新分配给dict,我是否会复制所有内容?那既不会高效又不会优雅。 问题答案: Swift beta 5已添加了此功能,并且您在几次尝试中都采用了新方法。的解缠运营商和现在穿过值要么运营商或方法调用。也就是说,您可以通过以下任何一种方式将其添加到该数组中: 与往常一样,请小心使用哪个运

  • 我开发了一个Web应用程序并将我的证书用于SSL。我不需要CA证书,因为客户端正在连接到内部网中的服务器。所以客户端每次都会收到不受信任的连接错误。你知道我们如何在每个浏览器中摆脱这个错误吗?我试图将我生成的证书添加到浏览器,但它不起作用,也无法识别我的证书类型。 谢谢 --法力