NSCoding:如何在inheritance的类中创build所需的init

我有同样的问题作为vince( NSCoding在Swift的inheritance类中需要初始化 )

我有一个类“源”和一个子类“RSSSource”。 这些类符合NSObject和NSCoding,我希望能够坚持NSKeyedArchiver。

我不知道如何在子类中创build所需的便利init?(coder aDecoder:NSCoder)。 我想调用超类的便利初始化。

PS:我知道我应该在他的post上发表评论,但我不能。 (声誉太低)

这是一个简单的例子:

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) } } 

我已经试过了,它只是自动添加编码。 你不需要自己添加你的编码,否则你想改变。

样本编码:

需要方便的init?(编码器aDecoder:NSCoder)

{

fatalError(“init(coder :)还没有实现”)

}