NSUserDefault
//******************** 5.1 NSUserDefault和对象归档 func useNSUserDefault() { //通过单利来创建一个NSUserDefaults对象,全局变量NSUserDefault,可在整个项目传递变量 var userDefault:NSUserDefaults = NSUserDefaults.standardUserDefaults() //通过init方法创建 var userDefault1:NSUserDefaults = NSUserDefaults(suiteName: "SwiftClass")! //获取userDefault单利下所有的值 println(userDefault.dictionaryRepresentation()) //判断NSUserDefaults的“appMessage”key 在dictionaryRepresentation中是否存在,如果不存在就设置“appMessage”值为This is app message。 if(userDefault.objectForKey("message") == nil){ userDefault.setObject("This_is_my_default_message", forKey: "message") } //如果想单独看某个key的设置,例如: var dic = userDefault.dictionaryRepresentation() var object_one:AnyObject? = (dic as NSDictionary).objectForKey("AppleKeyboards") // //或者 // var object_one:AnyObject? = dic["AppleKeyboards"] if let oValue: AnyObject! = object_one { println(oValue) } //Int类型 //设置 userDefault.setInteger(, forKey: "Int") //读取 var intValue = userDefault.integerForKey("Int") println(intValue) //Float类型 //设置 userDefault.setFloat(3.2, forKey: "Float") //读取 var floatValue = userDefault.floatForKey("Float") println(floatValue) //Double类 //设置 userDefault.setDouble(5.6890, forKey: "Double") //读取 var doubleValue = userDefault.doubleForKey("Double") println(doubleValue) //Bool类型 //设置 userDefault.setBool(true, forKey: "Bool") //读取 var boolValue = userDefault.boolForKey("Bool") println(boolValue) //NSURL类型 //设置 userDefault.setURL(NSURL(string: "http://www.iphonetrain.com")!, forKey: "NSURL") //读取 var urlValue = userDefault.URLForKey("NSURL") println(urlValue) //保存NSDate数据 //将对象转换成NSData流 var imageData:NSData = NSKeyedArchiver.archivedDataWithRootObject(UIImage(named: "SwiftClassWeiXin.png")!) //存储NSData对象 userDefault.setObject(imageData, forKey: "imageData") //读取数据 //获取NSData var objData:AnyObject? = userDefault.objectForKey("imageData") //还原对象 // var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as NSData) //2015年5月2号修改 var myImage:AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithData(objData as! NSData) //初始一个UIImage对象 println(myImage) //自定义的类实现存取需要通过NSData做载体 //创建AppsModel的实例 var model = AppsModel(imageName: "appIcon2.png", app_Name: "租房点评", app_Description: "租房被骗?现在开始,你来改变这一切!《租房点评》为你而备,租房无忧!") //实例对象转换成NSData var modelData:NSData = NSKeyedArchiver.archivedDataWithRootObject(model) //存储NSData对象 userDefault.setObject(modelData, forKey: "myAppModel") //保存NSString, userDefault.setValue("1_NSString", forKey: "NSString") userDefault.setObject("1_NSString1", forKey: "NSString1") //保存NSNumber, var number:NSNumber = NSNumber() userDefault.setValue(number, forKey: "number") userDefault.setObject(number, forKey: "number1") //保存NSArray var array1:NSArray = NSArray(array:["]) userDefault.setValue(array1, forKey: "array") userDefault.setObject(array1, forKey: "array1") //保存NSDictionary var dictionary:NSDictionary = NSDictionary(dictionary: ["]) userDefault.setValue(dictionary, forKey: "dictionary") userDefault.setObject(dictionary, forKey: "dictionary1") var value:AnyObject? = userDefault.valueForKey("dictionary") println(value) value = userDefault.objectForKey("dictionary1") println(value) //-------- 删除所有的值 var ar:NSDictionary = userDefault.dictionaryRepresentation() for key in ar.allKeys { // userDefault.removeObjectForKey(key as String) //2015年5月2号修改 userDefault.removeObjectForKey(key as! String) userDefault.synchronize() } }
@IBOutlet weak var textField: UITextField! @IBAction func btnSave(sender: UIButton) { var text = textField.text userDefault.setObject(text, forKey: "textField") userDefault.synchronize()//强制持久化数据 } @IBAction func btnLoad(sender: UIButton) { // userDefault.arrayForKey(<#defaultName: String#>) // var text = userDefault.dataForKey("textField") var text = userDefault.stringForKey("textField") textField.text = text } override func viewDidLoad() { super.viewDidLoad() /** 创建NSUserDefaults对象之后即可往里面添加数据,它支持的数据类型有NSString、 NSNumber、NSDate、 NSArray、NSDictionary、BOOL、NSInteger、NSFloat等系统定义的数据类型,如果要存放自定义的对象(如自定义的类对象),则必须将其转换成NSData存储: */ println(userDefault) // println(defaults) /** 创建一个user defaults方法有多个,最简单得快速创建方法: NSUserDefaults *accountDefaults = [NSUserDefaults standardUserDefaults]; 添加数据到 user defaults: [accountDefaults setObject:nameField.text forKey:UserDefaultNameKey]; 也可以添加基本数据类型int, float, bool等,有相应得方法 [accountDefaults setBool:YES forKey:UserDefaultBoolKey]; 从user defaults中获取数据: [accountDefaults objectForKey:NCUserDefaultNameKey] [accountDefaults boolForKey: UserDefaultBoolKey]; 要点: NSUserDefaults非常好用,并不需要用户在程序中设置NSUserDefaults的全局变量,需要在哪里使用NSUserDefaults的数据,那么就在哪里创建一个NSUserDefaults对象,然后进行读或者写操作。 针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。 */ }