ios - 应用程序退出时保存 NSUserDefaults

标签 ios swift cocoa-touch nsuserdefaults uiapplicationdelegate

<分区>

我想在用户使用主页按钮关闭应用程序时自动保存一堆 NSUserDefaults,而不是在按下保存按钮时(这是我目前所能找到的)。执行此操作的最佳方法是什么?

例如,我有一个 TextView 和两个可以增大和减小字体大小的按钮。不是每次用户更改文本大小时都为文本大小保存 NSUSerDefaults,是否可以在应用关闭时保存一次而不使用保存按钮?

我找到了 this其中讨论了诸如 applicationWillTerminate:applicationWillResignActive: 之类的方法,但我不太确定如何实现这些方法。

我已将 pointSize 默认设置为 18,但是当我增加它时:

@IBAction func largerTextButton(sender: AnyObject) {
    mainTextView.font =  UIFont(name: mainTextView.font.fontName, size: mainTextView.font.pointSize+1)
    println(mainTextView.font.pointSize)
}

并保存如下:

func applicationWillResignActive(application: UIApplication) {
    userDefaults.setObject(mainTextView.font.pointSize, forKey: "textSize")
    userDefaults.synchronize()
}

func applicationWillTerminate(application: UIApplication) {
    userDefaults.setObject(mainTextView.font.pointSize, forKey: "textSize")
    userDefaults.synchronize()
}

当我将此代码添加到按钮时,它可以很好地保存,但不会保存在 applicationWillResignActiveapplicationWillTerminate 下,因此保存本身不是问题。而是我遇到问题的 applicationWillResignActiveapplicationWillTerminate 方法。

下次我运行该应用程序时,我仍然得到 18,使用它来检查:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    println(toString(userDefaults.objectForKey("textSize")))
    ...

最佳答案

您可以使用这两个方法,甚至 didEnterBackground,它们在应用程序委托(delegate)中找到,只需调用即可。

[NSUserDefaults standardUserDefaults].synchronize

关于ios - 应用程序退出时保存 NSUserDefaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31713214/

上一篇:ios - 图像中带有复选框的 UICollectionView Cell

下一篇:ios - 带有 Swift 的 iOS 中的持久对象

相关文章:

ios - 未呈现分段控件中的图像

Swift - 具有可等同变量的结构

ios - 从外部 UIViewController 更新 SpriteKit 场景中的节点

ios - NSTemporaryDirectory 子目录

ios - UIScrollView 覆盖了我的 subview 的平移手势识别器

ios - 如何在iPad中运行Interactive PDF文件?

javascript - 用于为 Android、WinMobile、iOS 开发应用程序的统一语言

objective-c - 内存管理和performSelectorInBackground :

ios - 使用 URLRequestConvertible 在单元测试中链接错误

arrays - 对(字符串)日期数组进行排序