这是个简单的问题。正如您在代码中看到的,在任何情况下都有返回。但是,不知何故,xcode无法识别refresh()completionHandler块中的返回。
有什么建议吗?

    func accessTokenWithBearer() -> String {
            if !didTokenExpire() {
                return "Bearer \(accessToken!)"
            }else{
                Token.refresh({
                    return "Bearer \(self.accessToken!)"
                })
            }
    }

    class func refresh(completion: ()->()){
        completion()
    }

最佳答案

如注释所述,您应该向accessTokenWithBearer函数添加一个完成处理程序。

func accessTokenWithBearer(completion: String -> ()) {
    if !didTokenExpire() {
        completion("Bearer \(accessToken!)")
    }else{
        Token.refresh({
            completion("Bearer \(self.accessToken!)")
        })
    }
}

您还可以同时拥有一个完成处理程序和一个返回值。
func accessTokenWithBearer(completion: String -> ()) -> String? {
    if !didTokenExpire() {
        return "Bearer \(accessToken!)"
    }else{
        Token.refresh({
            completion("Bearer \(self.accessToken!)")
        })
        return nil
    }
}

关于ios - 函数中缺少返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37974468/

10-12 07:05