假设我有一个对象 Person。(我知道 Person 有语法错误。请忽略这些。)
class Person: NSObject, NSCoding {
var name : String
var salary: NSNumber
// MARK: NSCoding
required convenience init(coder decoder: NSCoder) {
self.init()
self.name = decoder.decodeObjectForKey("name") as String
self.salary = decoder.decodeObjectForKey("salary") as NSNumber
}
func encodeWithCoder(coder: NSCoder) {
coder.encodeObject(self.name, forKey: "name")
coder.encodeObject(self.salary, forKey: "salary")
}
}
我的问题是:是否有可能有两个单独的 encodeWithCoder 方法..一个在存档对象中包含薪水,一个不包含。就像是:
func encodeWithCoderPrivate(coder: NSCoder) {
coder.encodeObject(self.name, forKey: "name")
coder.encodeObject(self.salary, forKey: "salary")
}
func encodeWithCoderPublic(coder: NSCoder) {
coder.encodeObject(self.name, forKey: "name")
}
在 NSObject 中实现多个存档方法的最佳方法是什么,以限制写入存档的字段?