Swift語言精要 - 序列化和反序列化


在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"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM