【问题标题】:NSCoding : How to create required init in inherited classesNSCoding:如何在继承的类中创建所需的 init
【发布时间】:2016-03-08 11:19:37
【问题描述】:
【问题讨论】:
标签:
ios
swift
nscoding
nskeyedarchiver
【解决方案1】:
这是一个简单的例子:
class Source: NSObject, NSCoding {
var name: String?
func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "name")
}
required init?(coder aDecoder: NSCoder) {
name = aDecoder.decodeObjectForKey("name") as? String
}
}
class RSSSource: Source {
var rssName: String?
override func encodeWithCoder(aCoder: NSCoder) {
aCoder.encodeObject(name, forKey: "rssName")
super.encodeWithCoder(aCoder)
}
required init?(coder aDecoder: NSCoder) {
rssName = aDecoder.decodeObjectForKey("rssName") as? String
super.init(coder: aDecoder)
}
}
【解决方案2】:
我试过了,它只是自动添加编码。你不需要自己添加你的编码,否则你想改变。
示例编码:
required convenience init?(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}