swift - 来自故事板的初始化“此编码器要求从 initWithCoder 返回替换的对象”Swift
问题描述
我想从情节提要中注入一个 QuizMangerClass。
但是我收到错误“此编码器要求从 initWithCoder 返回替换的对象”。
private var quizManagerClass: QuizManagerProtocol
init(quizManager: QuizManagerProtocol) {
self.quizManagerClass = quizManager
super.init(nibName: nil, bundle: nil)
}
public init?(coder aDecoder: NSCoder, quizManager: QuizManagerProtocol){
self.quizManagerClass = quizManager
super.init(coder: aDecoder)
}
// called from SB
convenience required init?(coder aDecoder: NSCoder) {
self.init(coder: aDecoder, quizManager: QuizManagerMultiton.createQuizManager())
}
关于 SO 的其他问题是指情节提要、单元格和其他琐事上的出口,这些问题根本不适用于这个问题。
我希望能够初始化 QuizManager 以便在测试期间注入它,并不断出现相同的错误。
解决办法是什么?
解决方案
我通过减少两个初始化来让它工作
required init?(coder aDecoder: NSCoder) {
self.quizManagerClass = QuizManagerMultiton.createQuizManager()
super.init(coder: aDecoder)
}
另外,我认为您的代码无法运行,因为 QuizManager 需要可从 NSCoder 实例化。
“此编码器要求从 initWithCoder 返回替换的对象”
编辑:错别字
推荐阅读
- javascript - Cloud Functions (Firebase) - 通过部分加载 Firebase 模块来减少冷启动时间?
- javascript - 如何使用无限滚动链接页面上的元素?
- regex - 通过分隔符拆分 CLOB 数据时面临问题
- macos - net.LookUpHost() 使用 os.Hostname() 后没有输出这样的主机
- laravel - VSCODE php Intelephense 查找显示重复项的引用
- java - 加载更多 Instagram 评论和点赞
- java - 以下程序的输出给我,它只是没有点击。答案是 6 3,我显然不明白
- python - 为什么我要在 Django 中连接库路径?
- c# - Azure 存储队列中的“Execution Timeout Expired”消息 - 过去几天没有将数据库记录推送到搜索索引
- python - Python更改套接字窗口标题