这是个简单的问题。正如您在代码中看到的,在任何情况下都有返回。但是,不知何故,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/