【问题标题】:Saving NSUserDefaults when the app exits [duplicate]应用程序退出时保存 NSUserDefaults [重复]
【发布时间】:2015-07-30 00:08:12
【问题描述】:

我想在用户使用主页按钮关闭应用程序时自动保存一堆NSUserDefaults,而不是在按下保存按钮时(这是我迄今为止所能找到的全部)。最好的方法是什么?

例如,我有一个文本视图和两个可以增大和减小字体大小的按钮。不是每次用户更改文本大小时都保存 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")))
    ...

【问题讨论】:

  • 它们已经在 AppDelegate 中实现。只需添加您的保存方法

标签: ios swift cocoa-touch nsuserdefaults uiapplicationdelegate


【解决方案1】:

您可以使用这两种方法,甚至可以使用应用程序委托中的didEnterBackground,然后调用。

[NSUserDefaults standardUserDefaults].synchronize

【讨论】:

  • 我已经尝试在我提到的两种方法中使用userDefaults.setObject(mainTextView.font.pointSize, forKey: "textSize")userDefaults.synchronize()(请参阅我对原始问题所做的编辑),但仍然是 18?
  • 模拟器里有这个吗。您是否正确停止了应用程序?只需在 Xcode 中点击运行或停止按钮就会导致应用程序崩溃,并且这些方法将永远不会被调用。
  • 我尝试使用停止按钮停止,通过多任务菜单关闭应用程序,然后使用模拟器和我自己的 iPhone 上的主页按钮返回主屏幕。其中没有一个成功保存了我设置的任何NSUserDefaults。我认为applicationWillResignActiveapplicationWillTerminate 方法中的任何一个都没有被调用。有没有可能我错过了什么?
  • 你说你已经设置了磅值默认值。我唯一能想到的另一件事是,您在下次加载时再次将其设置为 18 某处。除此之外。不知道。很可能是某个地方的一个小错误,也许是错字?
猜你喜欢
  • 2015-10-12
  • 2015-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多