我如何保存多个开关的状态,这样当应用程序退出并重新打开时,所有开关都不在我退出之前的状态。以下是我为快速作业管理器编写的非常简单的代码。
//
// ViewController.swift
// HomeworkManager
//
// Created by Nate Parker on 9/2/14.
// Copyright (c) 2014 Nathan Parker. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func resetClicked(sender: AnyObject) {
spanish.setOn(false, animated: true);
algebra.setOn(false, animated: true);
amerCult.setOn(false, animated: true);
bio.setOn(false, animated: true);
col.setOn(false, animated: true);
}
@IBOutlet var spanish: UISwitch
@IBOutlet var algebra: UISwitch
@IBOutlet var amerCult: UISwitch
@IBOutlet var bio: UISwitch
@IBOutlet var col: UISwitch
}
在AppDelegate
类中,在applicationDidEnterBackground
中发布通知,因此当应用程序进入后台时,您的视图控制器将能够得到通知:
func applicationDidEnterBackground(application: UIApplication!) {
NSNotificationCenter.defaultCenter().postNotificationName("kSaveSwitchesStatesNotification", object: nil);
}
在您的viewcontroller类中添加以下代码:
override func viewDidLoad() {
super.viewDidLoad()
self.restoreSwitchesStates();
NSNotificationCenter.defaultCenter().addObserver(self, selector: "saveSwitchesStates", name: "kSaveSwitchesStatesNotification", object: nil);
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func saveSwitchesStates() {
NSUserDefaults.standardUserDefaults().setBool(spanish!.on, forKey: "spanish");
NSUserDefaults.standardUserDefaults().setBool(algebra!.on, forKey: "algebra");
NSUserDefaults.standardUserDefaults().setBool(amerCult!.on, forKey: "amerCult");
NSUserDefaults.standardUserDefaults().setBool(bio!.on, forKey: "bio");
NSUserDefaults.standardUserDefaults().setBool(col!.on, forKey: "col");
NSUserDefaults.standardUserDefaults().synchronize();
}
func restoreSwitchesStates() {
spanish!.on = NSUserDefaults.standardUserDefaults().boolForKey("spanish");
algebra!.on = NSUserDefaults.standardUserDefaults().boolForKey("algebra");
amerCult!.on = NSUserDefaults.standardUserDefaults().boolForKey("amerCult");
bio!.on = NSUserDefaults.standardUserDefaults().boolForKey("bio");
col!.on = NSUserDefaults.standardUserDefaults().boolForKey("col");
}
首先,添加viewcontroller作为应用程序进入后台时发布的通知的观察者。当触发此通知时,它将调用saveSwitchesStates()
方法,该方法将在NSUserDefaults
中保存交换机状态。此外,在viewDidLoad()
中调用restoreSwitchesStates()
,它将从NSUserDefaults
中读取开关状态的存储布尔值
当应用程序要关闭时,使用NSUserDefaults
保存状态,并在应用程序启动时将其加载回。说明如何使用NSUserDefaults
保存数据的教程
http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/