在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 - 反序列化
例子代碼:
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"
