Swift语言精要 - 序列化和反序列化
2016-05-23 14:10
330 查看
在swift中你可以把一个对象转换成为数据,你所要做的就是
首先,你需要让对象实现NSObject和NSCoding协议。
其次,实现以下两个方法:
encodeWithCoder
init(coder aDecoder: NSCoder) // 一个带NSCoder参数的初始化器
例子代码:
class SerializableObject : NSObject, NSCoding {
var name : String?
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name!, forKey:"name")
}
override init() {
self.name = "My Object"
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as? String
}
}
如果对象实现了NSCoding协议,那么它就能被转换成为NSData对象。
NSKeyedArchiver - 序列化
NSKeyedUnarchiver - 反序列化
例子代码:
首先,你需要让对象实现NSObject和NSCoding协议。
其次,实现以下两个方法:
encodeWithCoder
init(coder aDecoder: NSCoder) // 一个带NSCoder参数的初始化器
例子代码:
class SerializableObject : NSObject, NSCoding {
var name : String?
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name!, forKey:"name")
}
override init() {
self.name = "My Object"
}
required init(coder aDecoder: NSCoder) {
self.name = aDecoder.decodeObjectForKey("name") as? String
}
}
如果对象实现了NSCoding协议,那么它就能被转换成为NSData对象。
NSKeyedArchiver - 序列化
NSKeyedUnarchiver - 反序列化
例子代码:
let anObject = SerializableObject() anObject.name = "My Thing That I'm Saving" // Converting it to data let objectConvertedToData = NSKeyedArchiver.archivedDataWithRootObject(anObject) // Converting it back // Note that the conversion might fail, so 'unarchiveObjectWithData' returns // an optional value. So, use 'as?' to check to see if it worked. let loadedObject = NSKeyedUnarchiver.unarchiveObjectWithData(objectConvertedToData) as? SerializableObject print(loadedObject?.name) //"My Thing That I'm Saving"
相关文章推荐
- Swift语言精要 - 序列化和反序列化
- swift对象存储
- swift基础二
- Swift开篇002->基本运算符
- swift中的协议
- 二维码的简单封装(swift)
- swift基础一
- swift学习之路(四)bool型
- SQLite数据库的简单应用(swift)
- 开始学习Swift
- SQLite数据库基本使用(swift)
- Swift 协议详解
- Swift基础(二):运算符、字符串和字符、数组、集合、字典
- swift 函数、函数类型及使用——swift学习(五)
- swift--懒加载
- Swift新浪微博
- Swift Runtime分析:还像OC Runtime一样吗?来自于转载
- swift 之 namespace
- swift:使用cocoapods引入Alamofire
- WorkTimer - Swift