swift学习笔记(一)NSUserDefaults存储对象的方法
来源:互联网 发布:sqlserver教程推荐 编辑:程序博客网 时间:2024/05/03 08:49
在处理Swift持久化内容的时候,使用到了NSUserDefaults来保存数据,但是在实现过程中发现正常的对象无法保存,会报很多错,对象如下(简单的Student对象)
class Student { var name: String? var id: Int?}该对象在存储过程中,即如下方式存储时会报各种错误
let student = Student()let defaults = NSUserDefaults.standardUserDefaults()defaults.setObject(strDict, forKey: "strDict")defaults.synchronize()
其中需要继承NSObject类和NSCoding类,并且需要重写NSObject类中的description属性(如果需要的话)和无参构造,NSCoding类中的
requiredinit?(coder aDecoder:NSCoder)构造和
encodeWithCoder(aCoder:NSCoder)方法
改造如下:
class Student: NSObject, NSCoding{ var name: String? var id: Int? override var description: String { get { return "name: " + name! + " id: \(id)" } } override init() { } required init?(coder aDecoder: NSCoder) { self.id = aDecoder.decodeObjectForKey("id") as? Int self.name = aDecoder.decodeObjectForKey("name") as? String } func encodeWithCoder(aCoder: NSCoder) { aCoder.encodeObject(name, forKey: "name") aCoder.encodeObject(id, forKey: "id") }}无参构造不必实现什么或者赋值什么,如果你想在构造时就对对象属性赋值也可以重写有参构造
改造完毕之后借助NSData来实现在NSUserDefaults中对象的保存,代码如下所示:这里仅以Array类型作为示例,当类继承了NSObject和NSCoding后,对象,Array,Dictionary均能正常的存储
var students = [Student]()students.append(student1)students.append(student2)students.append(student3) let data: NSData = NSKeyedArchiver.archivedDataWithRootObject(students)defaults.setObject(data, forKey: "array")下面这句话我也在网上查了好多资料,其实是写不写都一样,只是用来保证在异常关闭前能存储正常
defaults.synchronize()读取方式如下:
let one = defaults.objectForKey("array") as? NSDataif one != nil {<span style="white-space:pre"></span>let student = NSKeyedUnarchiver.unarchiveObjectWithData(one!)<span style="white-space:pre"></span>print((student as! [Student]).description)}
以上,本人初学Swift,如有错误的地方,还请不吝指正,多谢
0 0
- swift学习笔记(一)NSUserDefaults存储对象的方法
- iOS -- 自定义对象的存储(NSUserDefaults)
- swift中NSUserDefaults的用法(轻量级本地数据存储)
- Swift简单的本地存储方式NSUserDefaults
- ios学习--NSUserDefaults 简介&使用 NSUserDefaults 存储自定义对象
- 大熊的swift学习笔记(一)
- Swift学习笔记(一)——Swift的数据类型
- swift的学习笔记(一)
- Swift学习笔记(一)
- 学习Swift笔记 (一)
- swift学习笔记(一)
- NSUserDefaults 存储自定义对象
- NSUserDefaults 存储自定义对象
- NSUserDefaults 存储自定义对象
- NSUserDefaults的使用(IOS - Swift)
- swift - NSUserDefaults 的使用
- swift对象存储 学习篇
- NSUserDefaults 简介,使用 NSUserDefaults 存储自定义对象
- UITapGestureRecognizer 的用法
- IOS键盘的一些东西
- 如何将一个Activity设置成窗口的样式
- 中国移动EMPP.dll组件运用
- java.lang.IllegalStateException: Fragment not attached to Activity 解决
- swift学习笔记(一)NSUserDefaults存储对象的方法
- XMLHttpRequest 异步方式和同步方式
- Go语言黑魔法
- Android中图片加载和显示问题的探究
- spring定时任务
- java中调用js脚本
- hibernate持久化对象状态
- GridView的一些特殊属性
- HTML转PDF+水印以及PDF+水印