首页 > 解决方案 > 在swift中使用switch语句的布尔函数

问题描述

我正在尝试使用 switch 语句获得布尔结果,但我猜我的代码有问题

class func login(username: String , password: String) -> Bool {
    let url = "http://127.0.0.1:3000/login/"+username+"/"+password
    Alamofire.request(url).responseJSON { response in
        switch response.result {
        case .failure:
            // print(error)
            return false
        case .success:
            // print(value)
            return true
        }
    }
}

标签: swiftswitch-statement

解决方案


您应该使用带有Bool参数的完成处理程序而不是返回值

class func login(username : String , password : String, _ completion: @escaping (Bool) -> ())

现在您可以像这样调用完成(也可以通过声明errorand来修复案例value

switch response.result {
case .failure(let error):
    //print(error)
    completion(false)
case .success(let value):
    //print (value)
    completion(true)
}

然后您可以在调用完成时访问Bool其闭包内的参数。

Foo.login(username: "", password: "") { success in 
    // print(success)
    ...
}

推荐阅读