2016-12-05 8 views
1

なぜ、私はnsuserdefaultsを正しく実行できないのですか?私がタップするとそれは何もしません。私が欲しいのは、電話に保存されたときに私がタップしたときに表示され、再びviewcontrollerに戻ろうとすると表示されることです。以下は私のコードです。Userdefaults not working

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.navigationItem.setHidesBackButton(true, animated: false) 
    self.hideKeyboardWhenTappedAround() 

    firstName.delegate = self 
    lastName.delegate = self 

    tableView.reloadData() 

    //Save Defaults 
    let defaults = UserDefaults.standard 
    if let _ = defaults.object(forKey: "firstName") as? String { 
     self.firstName.text = defaults.object(forKey: "firstName") as? String 
    } 

    if let _ = defaults.object(forKey: "lastName") as? String { 
     self.lastName.text = defaults.object(forKey: "lastName") as? String 
    } 

    if let _ = defaults.object(forKey: "contacts") as? Array<Any> { 
     self.contacts = (defaults.object(forKey: "contacts") as? Array)! 
    } 
} 



//MARK -> SAVE BUTTON 
    @IBAction func saveButtonSelected(_ sender: AnyObject) { 
      let defaults: UserDefaults = UserDefaults.standard 
      defaults.set(self.firstName.text, forKey: "firstName") 
      defaults.set(self.lastName.text, forKey: "lastName") 
      defaults.set(contacts, forKey: "contacts") 
     } 
+2

方法 "を再びビューコントローラへ行く" していますか? 'viewDidLoad'は実行されていますか?なぜあなたは変数ではなく条件式にアンラップして、それを割り当てるのですか? (これはあなたの問題ではない、それはちょうど不要です) – Paulw11

+0

私の答えと返信を確認してください。 – KSR

+0

これを実際のデバイスまたはシミュレータでテストしていますか? iOS 10? –

答えて

2

これを試してみてください:

@IBAction func saveButtonSelected(_ sender: AnyObject) { 
       let defaults: UserDefaults = UserDefaults.standard 
       defaults.set(self.firstName.text, forKey: "firstName") 
       defaults.set(self.lastName.text, forKey: "lastName") 
       defaults.set(contacts, forKey: "contacts") 
       defaults.synchronize() 
      }