首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NSCoding :如何在继承类中创建必需的初始化

NSCoding :如何在继承类中创建必需的初始化
EN

Stack Overflow用户
提问于 2016-03-08 19:19:37
回答 2查看 1.6K关注 0票数 1

我和文斯(NSCoding required initializer in inherited classes in Swift)也有同样的问题

我有一个“Source”类和一个“RSSSource”子类。这些类符合NSObjectNSCoding,我希望能够用NSKeyedArchiver持久化它们。

我不知道如何在子类中创建所需的便利init?(coder aDecoder: NSCoder)。我想把超类的便利性称为init

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-08 19:47:10

下面是一个简单的例子:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-03-08 20:11:17

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

示例编码:

代码语言:javascript
复制
required convenience init?(coder aDecoder: NSCoder)

{

fatalError("init(coder:) has not been implemented")

}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35865947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档