如果使用return,Swift中的Guard语句有错误

如果使用return,Swift中的Guard语句有错误,swift,Swift,我有这个密码 guard let url = NSURL(string: urlString) else{ print("No URL") return } return语句产生错误 非void函数应返回一个值 省略返回会导致下面的错误 保卫者身体不可跌倒,考虑使用“返回”或“中断”来退出范围 如何避免此错误 错误是说您的guard语句位于func()中,该语句的预期返回值为某些类型 例如,在greet()函数中,返回一个S

我有这个密码

 guard let url = NSURL(string: urlString) else{

            print("No URL")
            return

        }
return
语句产生错误

非void函数应返回一个值

省略
返回
会导致下面的错误

保卫者身体不可跌倒,考虑使用“返回”或“中断”来退出范围


如何避免此错误

错误是说您的
guard
语句位于
func()
中,该语句的预期返回值为某些
类型

例如,在
greet()
函数中,返回一个
String
,因此
guard
语句必须返回一个
String
值。必须从
guard
语句返回的值的
类型取决于包含它的函数

func greet(person: String, day: String) -> String {
    guard person != "Homer" else {
        return "Sorry, no Homer's allowed"
    }

    return "Hello \(person), have a great \(day)"
}

greet(person: "Homer", day: "Monday")

greet(person: "Douglas", day: "Thursday")
如果示例
greet()
函数中未返回
字符串
“抱歉,不允许使用荷马”,则您将看到相同的问题:

guard
语句只是针对它所包含的函数的不可用状态进行保护。因此
guard
return
语句只是函数早期
return
的一种形式,因此,它必须返回与函数定义相同的类型


在上面的
greet()
函数中,定义指定返回
String
->String
),因此
保护
的else块中的
返回
也必须
返回一个
字符串

您需要返回一个与函数的返回类型和您有错误的事实相适应的值。如果您需要答案中的更多细节,请显示您的功能。仅供参考-在Swift中使用
URL
,而不是
NSURL
。但是守卫声明的回报是什么?它基本上是一个if语句,那么它怎么能有一个返回值呢?我只是想退出警卫声明的主体。URL给了我错误。您必须在非void函数中返回任何值。@如果您需要更好的帮助,noobsmgoobs在您的问题中显示您的函数。我在函数中放了一个return语句,它成功了。我又做了一次guard语句,现在即使函数返回,错误也回来了。@noobsmgoobs请参见我的编辑…基本上guard返回和函数返回都是必需的,并且都必须与函数签名匹配