iOS开发——数据持久化Swift篇&(一)NSUserDefault
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对象,然后进行读或者写操作。 针对同一个关键字对应的对象或者数据,可以对它进行重写,重写之后关键字就对应新的对象或者数据,旧的对象或者数据会被自动清理。 */ }
iOS开发——数据持久化Swift篇&(一)NSUserDefault的更多相关文章
- iOS开发——数据持久化Swift篇&使用Core Data进行数据持久化存储
使用Core Data进行数据持久化存储 一,Core Data介绍 1,Core Data是iOS5之后才出现的一个数据持久化存储框架,它提供了对象-关系映射(ORM)的功能,即能够将对象转化成 ...
- iOS开发——数据持久化Swift篇&文件目录路径获取(Home目录,文档目录,缓存目录等)
文件目录路径获取(Home目录,文档目录,缓存目录等) iOS应用程序只能在自己的目录下进行文件的操作,不可以访问其他的存储空间,此区域被称为沙盒.下面介绍常用的程序文件夹目录: 1,Home ...
- iOS开发——数据持久化Swift篇&iCloud云存储
iCloud云存储 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super. ...
- iOS开发——数据持久化Swift篇&(四)CoreData
CoreData import CoreData class ViewController: UIViewController { override func viewDidLoad() { supe ...
- iOS开发——数据持久化Swift篇&(三)SQLite3
SQLite3 使用 //******************** 5.3 SQLite3存储和读取数据 func use_SQLite3() { //声明一个Documents下的路径 var db ...
- iOS开发——数据持久化Swift篇&(二)沙盒文件
沙盒文件 //******************** 5.2 文件操作 func use_FileOperations() { //1.获取程序的Home目录 let homeDirectory = ...
- iOS开发——数据持久化Swift篇&通用文件存储
通用文件存储 import UIKit class ViewController: UIViewController { @IBOutlet weak var textField: UITextFie ...
- iOS开发——数据持久化Swift篇&SettingBundle
SettingBundle import UIKit class ViewController: UIViewController { var userDefault = NSUserDefaults ...
- iOS开发——数据持久化Swift篇&模型对象归档
模型对象归档 import UIKit class ViewController: UIViewController { @IBOutlet weak var textField: UITextFie ...
随机推荐
- no symbol version for module_layout
内核模块编译helloworld: no symbol version for module_layout, 尝试各种解决办法, 都没搞定, 版本也是对的. dmesg提示no symbol vers ...
- Shell Scipt 命令行带参数,输出log
命令行带参数,以及字符串参数放到ssh命令里可以这么放: #!/bin/bash 这行保证运行bash可以这样: ./data.sh if [ $# != 4 ]; then echo ...
- 使用jqueryui
$(function () { $('#search_button').button(); /* 同时打开两个对话框 $('#reg').dialog(); $('#login').dialog(); ...
- Mysql字符串截取函数SUBSTRING的用法说明
感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:le ...
- Linux_搜文件
Linux 下搜文件, 通常先用 whereis 或 locate ,如果找不到,才以 find 搜寻!因为 whereis 与 locate 是利用数据库来搜寻数据,省时间! <<鸟哥的 ...
- [ZZ] C++ pair
Pair类型概述 pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同,基本的定义如下: pair<int, string> a; 表示a中有两个类型,第一个元素是int型的 ...
- 《The Google File System》论文阅读笔记——GFS设计原理
一.设计预期 设计预期往往针对系统的应用场景,是系统在不同选择间做balance的重要依据,对于理解GFS在系统设计时为何做出现有的决策至关重要.所以我们应重点关注: 失效是常态 主要针对大文件 读操 ...
- SQL Server 非聚集索引的覆盖,连接,交叉和过滤 <第二篇>
在SQL Server中,非聚集索引其实可以看做是一个含有聚集索引的表,但相对实际的表来说,非聚集索引中所存储的表的列数要少得多,一般就是索引列,聚集键(或RID).非聚集索引仅仅包含源表中的非聚集索 ...
- 使用bat快速创建cocos2d-x模板
在上一篇文章中我们学习了如何使用python创建cocos2d-x 2.2工程,但是每次我们都输入一大串的命令,好烦好烦啊.参考别人的文章这里写了一个bat,如下 @echo off echo --- ...
- [原创]Devexpress XtraReports 系列 5 创建交叉报表
昨天我们已经介绍了如何创建多栏报表,详见:[原创]Devexpress XtraReports 系列 4 创建多栏报表 今天我们继续我们的XtraReports系列.Demo和数据库文件最后会附上. ...