2015-10-13 46 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