我无法在 func 中正确检查来自 URLSession 的响应状态。 Swift
I can't correctly check the response status from URLSession in func. Swift
函数return 结果为零。我知道它异步工作。我尝试使用 completionHandler,但我做得不够好,而且我只有很多错误。在这种情况下如何使用 completionHandler?有没有更简单的方法来检查令牌?
func isAuthenticated() -> Bool {
guard let url = URL(string: self.url + "/api/authenticate") else {
return false
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue("*/*", forHTTPHeaderField: "accept")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue(JWT.getToken(), forHTTPHeaderField: "Authorization")
var result: Bool?
URLSession.shared.dataTask(with: request){ (data, response, error) in
guard error == nil else { print(error!.localizedDescription); return }
let httpResponse = response as! HTTPURLResponse
if httpResponse.statusCode == 200 {
result = true
} else {
result = false
}
}.resume()
return result!
}
函数调用:
if isAuthenticated() {
self.performSegue(withIdentifier: "loginOK", sender: self)
}
func isAuthenticated(completion: @escaping (_ success: Bool) -> Void) {
guard let url = URL(string: self.url + "/api/authenticate") else {
completion(false)
return
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue("*/*", forHTTPHeaderField: "accept")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue(JWT.getToken(), forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request){ (data, response, error) in
guard error == nil else { print(error!.localizedDescription); return }
let httpResponse = response as! HTTPURLResponse
if httpResponse.statusCode == 200 {
completion(true)
} else {
completion(false)
}
}.resume()
}
函数调用:
isAuthenticated() { success in
if success {
self.performSegue(withIdentifier: "loginOK", sender: self)
}
}
函数return 结果为零。我知道它异步工作。我尝试使用 completionHandler,但我做得不够好,而且我只有很多错误。在这种情况下如何使用 completionHandler?有没有更简单的方法来检查令牌?
func isAuthenticated() -> Bool {
guard let url = URL(string: self.url + "/api/authenticate") else {
return false
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue("*/*", forHTTPHeaderField: "accept")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue(JWT.getToken(), forHTTPHeaderField: "Authorization")
var result: Bool?
URLSession.shared.dataTask(with: request){ (data, response, error) in
guard error == nil else { print(error!.localizedDescription); return }
let httpResponse = response as! HTTPURLResponse
if httpResponse.statusCode == 200 {
result = true
} else {
result = false
}
}.resume()
return result!
}
函数调用:
if isAuthenticated() {
self.performSegue(withIdentifier: "loginOK", sender: self)
}
func isAuthenticated(completion: @escaping (_ success: Bool) -> Void) {
guard let url = URL(string: self.url + "/api/authenticate") else {
completion(false)
return
}
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.addValue("*/*", forHTTPHeaderField: "accept")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue(JWT.getToken(), forHTTPHeaderField: "Authorization")
URLSession.shared.dataTask(with: request){ (data, response, error) in
guard error == nil else { print(error!.localizedDescription); return }
let httpResponse = response as! HTTPURLResponse
if httpResponse.statusCode == 200 {
completion(true)
} else {
completion(false)
}
}.resume()
}
函数调用:
isAuthenticated() { success in
if success {
self.performSegue(withIdentifier: "loginOK", sender: self)
}
}