Swift,无法实例化 NSCoding 兼容 Class

Swift, Trouble Instantiating NSCoding Compliant Class

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

```swift

class TitleTextField: UITextField, UITextFieldDelegate {



required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!

    font = UIFont(name: "Helvetica-Neue", size: 25)

}

```

这只是一个例子,一个简单的例子。当我尝试在其他地方实例化此 class 时,即类似 "let textField = TitleTextField()" 的东西(抱歉不知道如何格式化)我收到错误 "missing argument for parameter 'coder' in call"。当我尝试使用建议的 TitleTextField(coder: NSCoder) 修复它时,它抛出一个错误并告诉我删除 "coder:",然后它抛出另一个错误并说 "Cannot convert value of type '(NSCoder).Type' (aka 'NSCoder.Type') to expected argument type 'NSCoder'"

如何实例化此 class?

这给我带来了自定义 class 的麻烦,我在遵循几个不同的示例后创建了符合 NSCoding 的 T。

这真的很简单 - 您需要添加另一个指定的初始化器,通常是 init(frame:) 用于 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)
}