2016-03-08 96 views
0

創建所需的初始化我有文斯(NSCoding required initializer in inherited classes in SwiftNSCoding:如何在繼承類

我有一個一流的「源」和子類「RSSSource」同樣的問題。這些類符合我希望能夠使用NSKeyedArchiver持久化的NSObject和NSCoding。

我不知道如何在子類中創建所需的便利init?(coder aDecoder:NSCoder)。我想調用超類的便利初始化。 PS:我知道我應該發表評論,但我不能。 (信譽太低)

回答

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

} 
-1

我嘗試它,它只是自動添加的編碼。你不需要自己添加你的編碼,否則你想改變。

樣品編碼:

需要方便的init(編碼器aDecoder:NSCoder)?

{

fatalError( 「INIT(編碼器:)尚未實現」)

}