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 ...
随机推荐
- Monitor traffic to localhost from IE or .NET
原文:http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/MonitorLocalTraffic Monitor traffic to lo ...
- Scrum之Sprint物件
产品订单(Product Backlog) 一个需求的列表. 一般情况使用用户故事来表示backlog条目 理想情况每个需求项都对产品的客户或用户有价值 Backlog条目按照商业价值排列优先级 优先 ...
- public static void main(String arg[])
该语句定义了main方法. main方法是程序执行的入口,所有的java程序都必须具备一个main()方法,而且必须按照如上的格式来定义. 不具有main方法的类可以编译,但不能执行.因为它没有m ...
- mysql 语句碎片
1. find_in_set('''$ip''',CONCAT('''', REPLACE( REPLACE(w_ip,',',''',''') ,'-',''',''') 2. grant all ...
- 在使用EF开发时候,遇到 using 语句中使用的类型必须可隐式转换为“System.IDisposable“ 这个问题。
原因就是 这个程序集中没有引用EntityFramework.可以使用Nuget 安装EntityFramewok.
- C++11初始化列表
[C++11之初始化列表] 在C++03中,在严格遵守POD的定义和限制条件的结构及类型上可以使用初始化列表(initializer list),构想是结构或是数组能够依据成员在该结构内定义的顺序通过 ...
- <<海闻电子发票接口 ESB 封装 代码指示 文档>>
<<海闻电子发票接口 ESB 封装 代码指示 文档>> isValid 是否有效标志 代码 中文 说明 true 成功 false 失败 code 海闻错误说明 代码 中文 ...
- spring 的properties解析
一般使用PropertyPlaceholderConfigurer来替换占位符,例如: <bean class="org.springframework.beans.factory.c ...
- 使用aspose.word两句代码将word转换为pdf
//Load Document Document document = new Document(@"C:\Users\Administrator\Desktop\人事---新员工转正总结( ...
- ]用EnumChildWindows遍历窗口的方法
最近项目有需要,得到一个非自己实现的窗口控件对象.于是想起曾经做过类似功能.总结如下: 调用EnumChildWindows(this->m_hWnd, EnumChildProc, NULL) ...