在Swift中传播基类错误

时间:2016-05-25 21:52:15

标签: swift cocoa

我希望NSTextField将空字符串替换为0(或允许的最小值),因此我创建了自定义NSNumberFormatter

class NonEmptyNumberFormatter: NSNumberFormatter {    
    override func getObjectValue(obj: AutoreleasingUnsafeMutablePointer<AnyObject?>, forString string: String, range rangep: UnsafeMutablePointer<NSRange>) throws {
        if string.isEmpty {
            obj.memory = self.minimum ?? 0
        } else {
            try super.getObjectValue(obj, forString: string, range: rangep)
        }
    }
}

它适用于空字符串,但是如果我设置minimum属性,则输入小于minimum的值会使应用程序崩溃。

try super.getObjectValue(...)来电有问题吗?

我想保留非空字符串的基类(NSNumberFormatter)行为。

以下是在操场上测试它的示例要点:https://gist.github.com/iskeld/a6ba57b145f2f9208fa63efc69d2c517 - 我不明白为什么OverridenFormatter在将调用委托给基类时会导致错误。

0 个答案:

没有答案