2017-08-12 13 views
1

私はUserDefaultsを使用してナビゲーションコントローラのバックプレスに小さな配列を格納しています。私が戻ってくるビューは、その配列を使用する必要があります。NSUserDefaults synchronize

私は、パフォーマンス上の理由から手動でsynchronizeメソッドを呼び出さないでください。NSUserDefaultsはデータを定期的に書き込みます。しかし、バックボタンを押したときに表示するために配列が常に更新されていることを確認できますか?

配列は、私はあなたがsynchronize()を呼ぶが、それは持っている以下のしわに注意する必要がある可能性がNSUserDefaults

+0

あなたの配列には何が含まれていますか? –

+3

UserDefaultsは、View Controller間でデータを渡す適切な方法ではありません。 – rmaddy

+0

おそらくあなたはhttps://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – rmaddy

答えて

0

を使用しています理由であるpermantelyとしても保存する必要があります。

この方法は、一定の間隔で自動的に呼び出されるので、または (アプリケーションが終了しようとしている場合、たとえば)更新したい場合は、自動 同期を待つことができない場合にのみ、このメソッドを使用します あなたは何も変更を加えていないにもかかわらず、ユーザーはディスク上の内容をデフォルトにします。あなたのシナリオで

Link

、変更がされ、システムが時間内に synchronize()方法をトリガしない可能性があり、上のビューコントローラに戻ってくるときにチェックが有効でない場合がありますので、あなたがそれを呼び出す必要がありますバックプレス。

私が示唆できる別のアプローチは、おそらくApp Delegateにグローバル配列を宣言し、それに値を設定してフェッチすることです。今

アプリを終了しようとしている、applicationWillTerminateにだけアプリが起動に関するとき、ユーザデフォルトから値を取得し、あなたのグローバル配列に値を設定し、同様synchronize()を呼び出すと、ユーザデフォルトでは、このグローバルな配列を保存します。

この方法では、synchronize()に一度だけ電話する必要があります。また、最新のデータもコピーされます。