问题描述
我一直在尝试设置数据,但正如我所看到和搜索的,我的问题是关于完成处理程序的异步线程 (?)。由于它延迟返回值,我无法设置我的值。当我打电话给他们时,他们都变成了零。
这是我要在其中进行身份验证的按钮:
@IBAction func signInButton(_ sender: UIButton) {
login.email = emailOutlet.text!
login.password = passwordOutlet.text!
//Thread.sleep(forTimeInterval: 2)
if login.doAuth() {
performSegue(withIdentifier: "Identifier",sender: self)
} else {
print("Either your password or your email is wrong.")
}
self.view.endEditing(true)
}
这是课堂:
class Login {
var email = ""
var password = ""
var isTrue = false
func doAuth() -> Bool {
Services.login(email: email,pass: password) { (userModal) in
if userModal?.email! != nil {
self.isTrue = true
} else {
self.isTrue = false
}
}
return isTrue
}
}
这是完成处理程序:
class func login(
email: String,pass: String,_ complation: @escaping (_ user: User?) -> Void
) {
let params = [
"command" : "login","email" : email,"password" : pass
]
Services().postRequest(
parameters: params,codableProtocol: User.self,isMemberFunction: true
) { (response) in
let r = (response as? ServiceResponse<User>)?.data
complation(r)
}
}
因此,由于我正在尝试进行身份验证,因此当我单击按钮时,它应该授权并返回 true 或 false。但是我无法处理时间延迟,因此第一次单击按钮不会使我返回 true(当然,当我输入正确的凭据时)。我必须单击两次才能获得延迟数据。我可以做些什么来解决这个问题,因为我使用来自 PHP 端的数据和 JSON?我必须使用大部分数据,但延迟并不能帮助我实现。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)