iOS开发——数据持久化&使用NSUserDefaults来进行本地数据存储
使用NSUserDefaults来进行本地数据存储
class func get_uuid() -> String{
var userid = NSUserDefaults.standardUserDefaults().stringForKey("hangge")
if(userid != nil){
return userid!
}else{
var uuid_ref = CFUUIDCreate(nil)
var uuid_string_ref = CFUUIDCreateString(nil , uuid_ref)
var uuid:String = NSString(format: uuid_string_ref)
NSUserDefaults.standardUserDefaults().setObject(uuid, forKey: "hangge")
return uuid
}
}
2,对原生数据类型的储存和读取
var userDefault = NSUserDefaults.standardUserDefaults()
//AnyObject
userDefault.setObject("hangge.com", forKey: "Object")
var objectValue:AnyObject? = userDefault.objectForKey("Object")
//Int类型
userDefault.setInteger(, forKey: "Int")
var intValue = userDefault.integerForKey("Int")
//Float类型
userDefault.setFloat(3.2, forKey: "Float")
var floatValue = userDefault.floatForKey("Float")
//Double类型
userDefault.setDouble(5.2240, forKey: "Double")
var doubleValue = userDefault.doubleForKey("Double")
//Bool类型
userDefault.setBool(true, forKey: "Bool")
var boolValue = userDefault.boolForKey("Bool")
//NSURL类型
userDefault.setURL(NSURL(string:"http://hangge.com")!, forKey: "NSURL")
var urlValue = userDefault.URLForKey("NSURL")
//NSString类型
userDefault.setObject("hangge.com", forKey: "NSString")
var nsStringValue = userDefault.objectForKey("NSString") as! NSString
//NSNumber类型
var number:NSNumber = NSNumber()
userDefault.setObject(number, forKey: "NSNumber")
number = userDefault.objectForKey("NSNumber") as! NSNumber
//NSArray类型
var array:NSArray = NSArray(array: ["])
userDefault.setObject(array, forKey: "NSArray")
//NSDictionaryy类型
var dictionary:NSDictionary = NSDictionary(dictionary: [":"hangge.com"])
userDefault.setObject(dictionary, forKey: "NSDictionary")
dictionary = userDefault.objectForKey("NSDictionary") as! NSDictionary
3,系统对象的存储与读取
系统对象实现存储,需要通过archivedDataWithRootObject方法转换成NSData为载体,才可以存储。下面以UIImage对象为例:
var userDefault = NSUserDefaults.standardUserDefaults()
//UIImage对象存储
//将对象转换成NSData流
var image = UIImage(named: "apple.png")
var imageData:NSData = NSKeyedArchiver.archivedDataWithRootObject(image!)
//存储NSData对象
userDefault.setObject(imageData, forKey: "imageData")
//UIImage对象读取
//获取NSData
var objData:NSData = userDefault.objectForKey("imageData") as! NSData
//还原对象
var myImage = NSKeyedUnarchiver.unarchiveObjectWithData(objData) as! UIImage
println(myImage)
4,自定义对象的存储和读取
如果想要存储自己定义的类,首先需要对该类实现NSCoding协议来进行归档和反归档。即该类内添加func encodeWithCoder(_encoder:NSCoder)方法和init(coder decoder:NSCoder)方法,将属性进行转换。
var userDefault = NSUserDefaults.standardUserDefaults()
//自定义对象存储
var model = UserInfo(name: ")
//实例对象转换成NSData
var modelData:NSData = NSKeyedArchiver.archivedDataWithRootObject(model)
//存储NSData对象
userDefault.setObject(modelData, forKey: "myModel")
//自定义对象读取
var myModelData = userDefault.objectForKey("myModel") as! NSData
var myModel = NSKeyedUnarchiver.unarchiveObjectWithData(myModelData) as! UserInfo
iOS开发——数据持久化&使用NSUserDefaults来进行本地数据存储的更多相关文章
- iOS开发UI篇—无限轮播(新闻数据展示)
iOS开发UI篇—无限轮播(新闻数据展示) 一.实现效果 二.实现步骤 1.前期准备 (1)导入数据转模型的第三方框架MJExtension (2)向项目中添加保存有“新闻”数据的pli ...
- ios网络学习------4 UIWebView的加载本地数据的三种方式
ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...
- iOS开发笔记9:NSUserDefaults存储自定义实体对象
NSUserDefaults常常用来本地存储一些简单的数据,例如用户信息等等,NSUserDefaults支持floats.doubles.integers.Booleans.URLs.NSData. ...
- iOS开发网络篇之Web Service和XML数据解析
郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主.捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下 ...
- 【iOS开发-60】案例学习:多组数据的tableView设置、添加右側组索引、多层数据模型设置以及valueForKeyPath
效果: 这里的数据模型有两层:每一组汽车是一层模型,每一组里面的每一行汽车品牌也是一层模型. (1)我们先创建一个WSCars模型. 在WSCars.h中: #import <Foundatio ...
- iOS开发点滴 - 如何通过Segue写代码传递数据从一个ViewController到另一个ViewController(Swift代码)
1. 拖线 按住Control键,用鼠标从源控制器的某个控件开始,拖动到目的控制器 2. 选择弹出类型并设置Segue Identifier 在弹出的对话框中,选择“Selection Segue-& ...
- IOS开发---菜鸟学习之路--(三)-数据解析
第三篇 上一篇我们讲了如何通过NSURL类来获取数据, 这一章我们来讲下对于获取过来的数据如何解析. 好了直接进入正文吧. 正文: 上一篇讲了 我们获取过来的数据格式是JSON格式的 大家可以搜下对应 ...
- Swift - 使用NSUserDefaults来进行本地数据存储
NSUserDefaults适合存储轻量级的本地客户端数据,比如记住密码功能,要保存一个系统的用户名.密码.使用NSUserDefaults是首选.下次再登陆的时候就可以直接从NSUserDefaul ...
- iOS数据持久化存储:归档
在平时的iOS开发中,我们经常用到的数据持久化存储方式大概主要有:NSUserDefaults(plist),文件,数据库,归档..前三种比较经常用到,第四种归档我个人感觉用的还是比较少的,恰恰因为用 ...
随机推荐
- delphi 操作 word
uses ComObj,word2000 procedure TForm1.ExportWord(); var FWord :Variant; FDoc :Variant; i,Row: ...
- <转>Python 参数知识(变量前加星号的意义)
csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的 ...
- XShell 屏幕锁定的恢复方法(Ctrl+Q)
操作XShell过程中很多时间大家会习惯性的按Ctrl+S进行保存. Ctrl+S在XShell的作用是屏幕锁定,很多朋友会无法操作,会直接把窗口关闭. 解决方法: 快捷键 Ctrl+Q 即能完成解锁 ...
- vs2010 无法连接到asp.net development server
http://blog.csdn.net/xqf309/article/details/7881257 今天打开之前的程序,按了F5进行调试,等了会弹出窗体来说:无法连接到asp.net develo ...
- fedora20安装hadoop-2.5.1
(博客园-番茄酱原创) 首先感谢作者lxdhdgss,他的博文直接帮助了我如何安装hadoop,下面是他的博文修改版,用于安装在fedora20上面的,jdk1.8版本. 到hadoop官网去copy ...
- 用java获取歌曲文件的专辑封面元信息
几个个软件: 1, Jaudioatgger: 链接 2, mp3agic 链接 3, Java mp3 id3 tag library (推荐用上面两个) 其它: android-midi-lib
- Struts2在Action中访问WEB资源
什么是WEB资源? 这里所说的WEB资源是指:HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API. 为什么需要访问WEB资 ...
- PC问题-(仅供备用)取消磁盘的自动扫描
问题现象:有一次整个单位停电了,之后再开机,每次电脑都自检.现在不想让电脑自检了. 问题原因:可能是因为停电,造成了系统文件的破坏. 问题处理:禁用电脑自检功能(注册表方法). Windows Reg ...
- iomanip.h
http://baike.baidu.com/link?url=zuNLgcUVylhUYYefyV13F38NChIMx8nnCEWV5zkkTQMrrSdKPxUERZuydSHtp6sXukWv ...
- 嵌入式LINUX入门到实践(一)
MINI2440 IIC协议 IIC协议在工程中应用广泛,在我看来,此协议的优势就在于其硬件及其简单,结构清晰. 首先来解读一下S3C2440A这款芯片的IIC协议. 一.一个协议的解读从如上结构图中 ...