情节提要中的init“此编码人员要求从initWithCoder返回被替换的对象” Swift

时间:2019-04-23 09:22:00

标签: 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,以便可以在测试期间注入它,并不断出现相同的错误。

解决方案是什么?

我当前的代码在这里:https://github.com/stevencurtis/quizissue

1 个答案:

答案 0 :(得分:1)

我通过减少两个init使它起作用

required init?(coder aDecoder: NSCoder) {
  self.quizManagerClass = QuizManagerMultiton.createQuizManager()

  super.init(coder: aDecoder)
}

此外,我认为您的代码无法运行,因为QuizManager需要可从NSCoder实例化。

  

“此编码器要求从initWithCoder返回被替换的对象”

编辑:错别字