2015-10-13 52 views
0

在一個非常基本的應用程序中,我有2個ViewController,讓我們稱之爲ViewController和SettingsViewController。ios編程:保持用戶配置在內存vs存儲

A「設置」上的ViewController按鈕塞格斯用戶SettingsViewController

在SettingsViewController,用戶可以使用的UIDatePicker設定時間戳或不和打「完成」,以順着接下去回的ViewController

現在,當用戶再次返回到SettingsViewController,我試圖確保上次訪問該VC的數據仍然相關,而我發現VC是新的並且沒有回憶!這是否意味着我必須在用戶離開SettingsViewController之前存儲我需要記住的所有內容?

回答

2

是的。一旦從SettingsViewController返回到ViewController,SettingsViewController將被銷燬並且其中的數據丟失。

根據你正在保存的內容,你可以簡單地使用NSUserDefaults保存數據。

例如,存儲一個字符串:

let userDefaults = NSUserDefaults.standardUserDefaults() 
userDefaults.setValue("saveMe", forKey: "someKey") 

然後訪問此稍後在其他的ViewController:

let userDefaults = NSUserDefaults.standardUserDefaults()  
userDefaults.stringForKey("someKey")! 
+0

增加了一個小例子進行保存,然後訪問字符串。您也可以使用NSUserDefaults保存許多其他數據類型。 – myles

+0

謝謝,但是如果我想保留內存中的對象而不是每次在中間段之間存儲對象,這似乎有點低效。沒有辦法保留轉換之間的觀點狀態嗎? – wrecktangle

+1

不是。視圖被破壞以保持高效,以便內存不會浪費在用戶看不到的視圖上,也可能無法返回。要將數據純粹保存在內存中,您必須將SettingsViewController中的數據傳遞迴ViewController,然後將其從ViewController傳遞到SettingsViewController。 'NSUserDefaults'實際上非常快,特別是在讀取和實際值在短期內被緩存以便它不需要從磁盤讀取時。 – myles