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)
}
我一直在使用 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)
}