抱歉,您遇到一个可怕的问题,但是我一直在阅读快速的书和后续教程,并且发现了有关此NSCoder协议并禁用了它的功能。
required init(coder aDecoder: NSCoder) {
fatalError("not been implemented")
}
我了解所需的init,但我不了解我必须编写的代码。是否表示如果通过了NSCoder,就会发生致命错误?另外,这个词coder
是什么意思?为什么在变量名前面需要它?
该代码的目的是满足NSCoding协议的要求,该协议要求您必须实现init(coder:)
,而实际上不必费心编写该方法的任何有意义的实现。如果您在这里要做一些有意义的事情,则可以删除该fatalError
行并做一些有意义的事情。实际上,您是在说:“我对此没有任何实现,因此,如果调用它,我们将面临严重麻烦,我想故意崩溃!”
该单词coder
是此参数的“外部名称”。在Swift中,参数可以同时具有内部名称和外部名称。coder
意味着,当您调用此函数时,请调用此参数coder:
(实际上就是您所做的)。这是绝对必要的,因为这就是包括可可在内的世界看到这种功能的方式。coder:
是其名称,身份的一部分。但是,该单词aDecoder
仅是局部参数的内部名称,仅是一种服务建议。您可以使用其他内部名称,甚至可以删除它,这将使内部名称与外部名称相同。
这里的情况是您要覆盖Cocoa函数,并且必须使用该函数的正确名称。这意味着函数名称,外部参数名称和参数类型。它们必须完全正确,否则将与您应该覆盖的功能不同。但是内部参数名称(传递给函数主体的局部变量)由您自己决定,您可以根据需要更改它们。我经常这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句