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 ...
随机推荐
- 数往知来SQL SERVER 视图 触发器 <九>
SQL server学习_视图 1.视图 视图其实是一张虚拟表,他是一张表的部分数据或多张表的综合数据(视图就是把SQL语句封装起来) 可以看做是一个结果集,但是不是一个结果集 视图不具备存储数据的能 ...
- 【IDE】SharpDevelop
SharpDevelop 这个轻型的开发工具支持多种程序语言,包括C#.java以及VB.NET,同时还支持多种语言界面,象任何爱好者开发的工具一样.这个编辑器的界面风格类似于Office XP以及V ...
- spark 连接 mysql 数据库
在所有master和slave上也要在spark/conf/spark-conf.sh里面设置driver的classpath,解决编译找不到driver的问题 http://www.iteblog. ...
- windows下跑python flask,环境配置
首先声明一下,我安装的是python 2.7. 第一步:下载easy_setup.py 下载地址:https://pypi.python.org/pypi/setuptools 这个下载地址真心难找, ...
- STL源码分析读书笔记--第二章--空间配置器(allocator)
声明:侯捷先生的STL源码剖析第二章个人感觉讲得蛮乱的,而且跟第三章有关,建议看完第三章再看第二章,网上有人上传了一篇读书笔记,觉得这个读书笔记的内容和编排还不错,我的这篇总结基本就延续了该读书笔记的 ...
- 读取proc信息的可扩展实现
需求 1. 将内存.线程数等信息注册到zk上进行监控 2. 统计信息,为下一步做负载均衡做准备. 实现 本文只解决问题1. 从网上查询了下,这些信息可以从proc文件系统中获取,如果不知道proc的, ...
- leveldb
[LevelDB] LevelDB is a fast key-value storage library that provides an ordered mapping from string k ...
- P67、H67、H61、P55、H57、H55 区别
Intel平台上我们现在已经有了LGA775.LGA1366.LGA1156三种封装接口,SNB还会带来两种,包括今天要看到的LGA1155(取代LGA1156),以及明年下半年的高端LGA2011, ...
- AJAX的工作原理及其优缺点
1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...
- Android 解析JSONObject以及JSONArray对比
在Android客户端与服务器交互的过程中,客户端一般采用json解析服务器的返回数据.此时有两种数据格式.但其根本都是字符串或字符串数组! 1.JSONObject 下面是PHP端代码: <? ...