【问题标题】:ios programming: Keeping user configuration in memory vs storageios编程:将用户配置保存在内存与存储中
【发布时间】:2015-10-13 16:20:14
【问题描述】:

在一个非常基本的应用程序中,我有 2 个 ViewController,我们称它们为 ViewController 和 SettingsViewController。

ViewController 上的“设置”按钮将用户引导至 SettingsViewController

在 SettingsViewController 中,用户可以使用或不使用 UIDatePicker 设置时间戳,然后点击“完成”以继续返回 ViewController

现在当用户再次返回 SettingsViewController 时,我试图确保上次访问此 VC 的数据仍然相关,但我发现 VC 是新的并且没有任何记忆!这是否意味着我必须在用户离开 SettingsViewController 之前存储我需要记住的所有内容?

【问题讨论】:

    标签: ios iphone swift uiviewcontroller swift2


    【解决方案1】:

    是的。一旦你从 SettingsViewController 返回到 ViewController,SettingsViewController 就会被销毁,里面的数据也会丢失。

    根据您要保存的内容,您只需使用 NSUserDefaults 即可保存数据。

    例如,存储一个字符串:

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

    然后稍后在您的其他 ViewController 中访问它:

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

    【讨论】:

    • 添加了一个小例子来保存然后访问一个字符串。您也可以使用 NSUserDefaults 保存许多其他数据类型。
    • 谢谢,但是如果我想将对象保留在内存中,而不是每次在 segues 之间存储它们,这似乎有点低效。有没有办法在转换之间保留视图的状态?
    • 并非如此。视图被销毁以保持效率,因此内存不会浪费在用户看不到的视图上,也可能不会返回。要将数据完全保存在内存中,您必须将数据从 SettingsViewController 传递回 ViewController...,然后在返回时将其从 ViewController 转发到 SettingsViewController。 NSUserDefaults 实际上非常快,尤其是在读取时,实际上值在短期内被缓存,因此不需要从磁盘读取。
    • 但是,我想说NSUserDefaults 旨在存储少量信息,例如您示例中的日期。它可以存储数组和字典之类的东西,但我不会在其中存储特别大的东西。
    • 谢谢,听起来很合理,我会用这个
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多