Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift,实例化NSCODE兼容类时遇到问题_Swift_Nscoding - Fatal编程技术网

Swift,实例化NSCODE兼容类时遇到问题

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

我一直在用NSCoding设置路障。具体来说,实例化一个符合NSCoding的类。也许我遗漏了一些非常明显的东西,但我还没有找到任何答案

```迅捷的

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:)
for
UIView
。实际上,您可以在其中调用
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
实现。