Swift,麻烦实例化NSCoding兼容类

时间:2016-03-18 21:47:42

标签: swift nscoding

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

```swift

class TitleTextField: UITextField, UITextFieldDelegate {



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

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

}

```

这只是一个例子,一个简单的例子。当我尝试在其他地方实例化这个类时,就像"让textField = TitleTextField()" (很遗憾无法弄清楚如何格式化)我得到错误"缺少参数'编码器'在电话"。当我尝试使用建议的TitleTextField(编码器:NSCoder)修复它时,它会抛出一个错误并告诉我删除"编码器:"然后它会抛出另一个错误并说"无法转换值type'(NSCoder).Type' (又名' NSCoder.Type')预期参数类型' NSCoder'"

如何实例化此类?

这给我带来了麻烦,我创建了一个符合NSCoding的自定义类,以及在将几个不同的例子传递给T之后。

2 个答案:

答案 0 :(得分:2)

这非常简单 - 您需要为init(frame:)添加另一个指定的初始值设定项,通常为UIView。您实际上只需在其中调用super.init(...)

问题是,一旦添加了一个初始化程序,其他初始化程序就会停止从超类继承,你必须定义它们。

答案 1 :(得分:1)

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)
}