在iOS应用中保留数据

时间:2017-09-20 10:08:26

标签: ios userdefaults

我是iOS新手。我想保存从authentication token收到的REST API,以便在不需要登录的情况下用于进一步的api通话。目前我使用UserDefaults来存储此令牌。除非app完全关闭,否则此令牌工作正常。重新启动应用程序需要我登录屏幕。

像这样保存token

UserDefaults.standard.setValue(authToken, forKey: "auth_token")
UserDefaults.standard.synchronize() // Now this call is derpecated. Framework handles this call at proper places.

LoginViewController

override func viewDidLoad(){
   super.viewDidLoad()

   if UserDefaults.standard.string(forKey: "auth_token") != nil { 
        self.performSegue(withIdentifier: "login_success", sender: self)
   }
}

但问题是即使在应用程序完全关闭后,如何才能持久保存此令牌?

编辑

我还尝试在UserDefaults课程的applicationWillTerminate方法中同步AppDelegate只是为了确保,但即使不起作用。

1 个答案:

答案 0 :(得分:0)

UserDefaults没有错。只需将触发segue调用包装在主队列中就可以正常工作。

override func viewDidLoad() {
     super.viewDidLoad()

     if UserDefaults.standard.string(forKey: "auth_token") != nil {
       DispatchQueue.main.async {
         self.performSegue(withIdentifier: "login_success", sender: self)
       }
     }          
}