Swift,实例化NSCODE兼容类时遇到问题
我一直在用NSCoding设置路障。具体来说,实例化一个符合NSCoding的类。也许我遗漏了一些非常明显的东西,但我还没有找到任何答案 ```迅捷的Swift,实例化NSCODE兼容类时遇到问题,swift,nscoding,Swift,Nscoding,我一直在用NSCoding设置路障。具体来说,实例化一个符合NSCoding的类。也许我遗漏了一些非常明显的东西,但我还没有找到任何答案 ```迅捷的 class TitleTextField: UITextField, UITextFieldDelegate { required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! font = UIFont(name: "Helvetica-Neue
class TitleTextField: UITextField, UITextFieldDelegate {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
font = UIFont(name: "Helvetica-Neue", size: 25)
}
```
这只是一个简单的例子。当我尝试在其他地方实例化这个类时,例如“let textField=TitleTextField()”(抱歉,我不知道如何格式化它),我得到了错误“调用中缺少参数'coder'的参数”。当我尝试用建议的TitleTextField(coder:NSCoder)修复它时,它抛出一个错误并告诉我删除“coder:”,然后它抛出另一个错误并说“无法将类型的值(NSCoder.type)(又名“NSCoder.type”)转换为预期的参数类型“NSCoder”
如何实例化这个类
这给我创建了一个自定义类带来了麻烦,该类在遵循了T的几个不同示例后也符合NSCoding。这非常简单-您需要添加另一个指定的初始值设定项,通常是
init(frame:)
forUIView
。实际上,您可以在其中调用super.init(…)
问题是,一旦您添加了一个初始值设定项,其他初始值设定项就不再从超类继承,您必须定义它们
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
font = UIFont(name: "Helvetica-Neue", size: 25)
}
这个代码对我有用。似乎您在func声明中遗漏了可选项
public class UIView : UIResponder {
public init?(coder aDecoder: NSCoder)
}
我不明白UIView与此有什么关系it@R.P.Carson
UITextField
是UIView
的子类,初始值设定项来自UIView
。我不明白UIView与它有什么关系。而代码是编译的,我只是无法创建TitleTextField的实例。它只是从UIView界面复制粘贴代码,以显示所需的init
实现。