我有兩個(2)swift 3.0文件。如何使用UserDefaults.standard將會話保存在Swift 3.0中?
編輯:
我的目標是保持積極的ViewController /出現登錄後就是成功。 我想在註銷按鈕命中時保持LoginVC激活狀態。
一切工作正常,如發佈和讀取JSON數據。
編輯:
的loggedIn的時候,但是當我打註銷按鈕,停止並重新構建它,視圖控制器仍然不能排除視圖控制器成功激活。它應該重定向到LoginVC。
我想可能是我的UserDefaults.standard代碼有問題。
我的代碼如下
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad() }
override func viewDidAppear(_ animated: Bool) {
let isUserLoggedIn = UserDefaults.standard.bool(forKey: "isUserLoggedIn")
if(!isUserLoggedIn){
self.performSegue(withIdentifier: "loginview", sender: self)
}
}
@IBAction func logoutData(_ sender: Any) {
UserDefaults.standard.set(true, forKey: "isUserLoggedIn");
UserDefaults.standard.synchronize();
self.performSegue(withIdentifier: "loginview", sender: self)
}
}
LoginVC.swift
import UIKit
class LoginVC: UIViewController {
@IBOutlet var _login: UITextField!
@IBOutlet var _pass: UITextField!
var login: String!
var pass: String!
override func viewDidLoad() { super.viewDidLoad() }
@IBAction func loginData(_ sender: Any) {
login = _login.text
pass = _pass.text
if(login == "" || pass == "") {
return
}
else {
let url = URL(string: "http://localhost/login.php")
let session = URLSession.shared
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"
let paramToLogin = "login=\(login!)&pass=\(pass!)"
request.httpBody = paramToLogin.data(using: String.Encoding.utf8)
let task = session.dataTask(with: request as URLRequest, completionHandler: {
(data, response, error) in
if error != nil {
return
}
else {
do {
if let json = try JSONSerialization.jsonObject(with: data!) as? [String: String]
{
DispatchQueue.main.async {
let success = Int(json["message"]!)
if(success == 1){
UserDefaults.standard.set(true, forKey: "isUserLoggedIn")
UserDefaults.standard.synchronize();
self.dismiss(animated: true, completion: nil)
return
}
}
}
}
catch { }
}
})
task.resume()
}
}
}
你應該使用'set(true,forKey:「yourKey」)'而不是在你登錄後讀取它 –
你還需要在發佈之前序列化你的JSON數據https://developer.apple.com/reference/foundation/jsonserialization –
是的。我已經更新了這個問題。但是還有另一個問題。當我點擊註銷按鈕。它不殺死會話。 。 – AlotJai