2017-08-12 51 views
1

我正在使用UserDefaults在導航控制器的後按下存儲小陣列。我正在返回的視圖需要使用該數組。NSUserDefaults同步

我讀過你不應該爲了性能原因手動調用synchronize方法,NSUserDefaults會定期寫入數據。但是,我可以肯定,該數組將始終更新爲在後退按鈕按下使用的視圖?

的陣列需要被permantely存儲以及這就是爲什麼我使用NSUserDefaults的

+0

你的數組包含什麼? –

+3

UserDefaults不是在視圖控制器之間傳遞數據的正確方法。 – rmaddy

+0

也許你應該看到https://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – rmaddy

回答

0

你可以稱之爲synchronize()但需要注意以下皺它的。

因爲這個方法是每隔一段時間自動調用,使用此方法僅如果要更新不能等待自動 同步(例如,如果你的應用程序即將退出)或 用戶默認使用磁盤上的內容,即使 您尚未進行任何更改。

Link

在你的情況,你應該調用它,因爲你正在改變和系統可能不會觸發時間synchronize()方法和回來的視圖控制器上,當你的支票可能無效後推。

我可以建議的另一種方法是聲明一個全局數組,可能在App Delegate中,並設置和提取值。

現在,當應用程序即將終止,在剛剛applicationWillTerminate保存此全局陣列中用戶默認,稱synchronize(),同樣,當應用程序即將推出,從獲取用戶默認值和值設置爲全局陣列。

這樣,您只需要撥打synchronize()一次,您也將擁有最新的數據副本。