我想从情节提要中插入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,以便可以在测试期间注入它,并不断出现相同的错误。
解决方案是什么?
答案 0 :(得分:1)
我通过减少两个init使它起作用
required init?(coder aDecoder: NSCoder) {
self.quizManagerClass = QuizManagerMultiton.createQuizManager()
super.init(coder: aDecoder)
}
此外,我认为您的代码无法运行,因为QuizManager需要可从NSCoder实例化。
“此编码器要求从initWithCoder返回被替换的对象”
编辑:错别字