gpt4 book ai didi

swift - 子类化格式化程序在初始化程序上崩溃

转载 作者:行者123 更新时间:2023-11-30 10:28:04 25 4
gpt4 key购买 nike

我正在尝试对 Formatter 类进行子类化以对文本字段执行验证。调用 super.init() 时应用程序崩溃:

class LengthFormatter: Formatter {
private var maxLength: Int

init(_ maxLength: Int) {
self.maxLength = maxLength
super.init() // BAD_ACCESS crash
}

required init? (coder: NSCoder) {
self.maxLength = 0
super.init(coder: coder)
}

我这样调用它:

nameTextfield.formatter = LengthFormatter(3)

其中nameTextField是一个NSTextField

我希望能够在初始化时设置最大长度。由于 Formatter 没有这样的初始值设定项或字段,因此应该如何完成?

最佳答案

我认为崩溃是由于基本 Formatter 中的抽象函数异常造成的,应该像下面这样重写它(使用 Xcode 11.2/macOS 10.15 进行测试)

class LengthFormatter: Formatter {
private var maxLength: Int

init(_ maxLength: Int) {
self.maxLength = maxLength
super.init()
}

required init? (coder: NSCoder) {
self.maxLength = 0
super.init(coder: coder)
}

override func string(for obj: Any?) -> String? { // overriden abstract method
return obj as? String // < example, returned value might depend on context
}
}

关于swift - 子类化格式化程序在初始化程序上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com