【发布时间】:2020-06-07 22:28:56
【问题描述】:
我将进行登录,并且发布请求在函数中。
在 if 语句 if dict!["Authorized"] as AnyObject? === true as AnyObject 中,如果授权为真,我想返回。
但是想要返回时的错误是Unexpected non-void return value in void function
我试图将 func 声明为 Bool 或任何其他类似 -> Bool 的语句。
但这不起作用。
这是我的代码。
func Login(Benutzer: String, Password: String) {
var request = URLRequest(url: URL(string: "http://mydomain/ajax/login.php")!)
request.httpMethod = "POST"
let postString = "Benutzername=\(String(describing: Benutzer))&Password=\(String(describing: Password))"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print("error=\(String(describing: error))")
DispatchQueue.main.async {
if error as AnyObject? === "The Internet is Down" as AnyObject {
}
else {
let alert = UIAlertController(title: "Error", message: "You have to turn on your Internet or Server is Down ", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print("response = \(String(describing: response))")
}
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(String(describing: responseString))")
func convertToDictionary(text: String) -> [String: Any]? {
if let data = text.data(using: .utf8) {
do {
return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
} catch {
print(error.localizedDescription)
}
}
return nil
}
let dict = convertToDictionary(text: responseString!)
DispatchQueue.main.async {
if dict!["Authorized"] as AnyObject? === true as AnyObject {
return true
// error is here
}
else {
let alert = UIAlertController(title: "Error", message: dict!["Message"] as? String, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true)
}
}
}
task.resume()
}
@IBAction func loginTapped(_ sender: Any) {
let Benutzer = benutzernameTextField.text;
let Password = passwordTextField.text;
if benutzernameTextField.text == Benutzer && passwordTextField.text == Password {
}
}
}
【问题讨论】:
-
为什么不对错误使用
throw?而且,你不能return异步调用的结果。
标签: swift