2017-12-06 7 views
0

私のアプリでは、データをuserDefaultsに保存しました。同じキーでデータを更新しようとすると、更新されますが、シミュレータを再起動します。そうでなければ、私はすぐにそれにアクセスしたいのですが(それは他のView Controllerです)、更新されたオブジェクトを私に渡すのではなく、そのキーで保存した最後のデータを返します。 1つのビューコントローラ内のデータをoverride func viewWillDisappear(_ animated :)に更新し、親ビューコントローラでそのデータにアクセスしようとしました。ここでユーザーからのデータにアクセスできないアプリケーションのライフサイクルでのデフォルト

である私がどのように:

override func viewWillDisappear(_ animated : Bool) { 
    super.viewWillDisappear(animated) 
    if self.isMovingFromParentViewController { 
     if saveButtonPressed != true { 
      // here I don't need to execute code the back button is pressed 
     } else { 
      if let selection = selectedMinutes { 
       UserDefaults.standard.set(selection, forKey: "selectedRow") 
       print(UserDefaults.standard.object(forKey: "selectedRow")!) // this line prints the actual updated data but I still cannot get it in the parent view controller 
      } 
     } 
    } 
} 
+0

後UserDefaultsを同期呼び出す必要がありますか? – Leonardo

+0

親ビューコントローラは実際には以前のコントローラであり、現在のビューコントローラをポップするだけで、そのような親ビューコントローラにアプリが入ります。 – Viktor

+0

'UserDefaults'を使ってコントローラ間でデータを共有しないでください。値を親コントローラに直接渡すことができるように、親ビューコントローラへの参照が必要です。 – vadian

答えて

-2

あなたは親ビューコントローラで、あなたがそれにアクセスしようとしている設定データ

UserDefaults.standard.set(selection, forKey: "selectedRow") 
UserDefaults.standard.synchronize(); 
+0

実際に[Apple Docs](https://developer.apple.com/documentation/foundation/userdefaults/1414005-synchronize)によると同期は不要です – Leonardo

+0

ありがとうございます、しかし私は試してみましたが動作しません – Viktor

関連する問題