【发布时间】: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()
}
当我将此代码添加到按钮时,它保存得很好,但在applicationWillResignActive 和applicationWillTerminate 下没有保存,因此保存本身不是问题。而是我遇到问题的applicationWillResignActive 和applicationWillTerminate 方法。
下次我运行应用程序时,我仍然得到 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