我有一个可以更改用户密码的应用程序。重置密码过程全部通过Web链接完成。该过程完成后,用户将返回其应用程序。鉴于密码现已更改,我想注销用户。
当用户向服务器请求信息时,我的服务器代码将以自定义代码响应,以使应用程序知道密码已更改,从而完成此操作。在这种情况下,代码为“ 177”。 我试图为用户提供“登录” uiviewcontroller-但没有成功。屏幕只是冻结。有人可以请教吗?
if code == 177{
// INVALID API KET USED. LOG USER OUT
print("INVALID API KET USED. LOG USER OUT")
GlobalFunction.logout(action: {
// GO TO LOGIN VIEWCONTROLLER
print("GO TO LOGIN PAGE")
let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "login") as! MyLoginViewController
self.present(loginVC, animated: true, completion: nil)
})
return
}
第二堂课:
class GlobalFunction{
// LOG USER OUT OF APPLICATION
static func logout(action: @escaping (() -> ())){
// Remove logged in user credentials
UserDefaults.standard.removeObject(forKey: "userId")
UserDefaults.standard.removeObject(forKey: "firstname")
UserDefaults.standard.removeObject(forKey: "firstname")
UserDefaults.standard.removeObject(forKey: "api_key")
UserDefaults.standard.synchronize()
print("user logged out")
}
}
答案 0 :(得分:1)
确保必须在主线程上运行UI事件。
DispatchQueue.main.async {
let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "login") as! MyLoginViewController
self.present(loginVC, animated: true, completion: nil)
}