【问题标题】:Cocoa/Swift 3.0 replacement for NSNumberFormatter.isPartialStringValidNSNumberFormatter.isPartialStringValid 的 Cocoa/Swift 3.0 替代品
【发布时间】:2016-09-17 07:45:32
【问题描述】:

在 macOS 的 Swift Cocoa 应用程序中,我从 NSNumberFormatter 继承并覆盖了 isPartialStringValid。迁移到 Swift 3.0 后,我现在必须继承 NumberFormatter 并且我收到错误“方法不会覆盖其超类中的任何方法”。我可以用什么来代替这个方法?

override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer<AutoreleasingUnsafeMutablePointer<NSString?>>?, errorDescription error: AutoreleasingUnsafeMutablePointer<AutoreleasingUnsafeMutablePointer<NSString?>>?) -> Bool { ... }

【问题讨论】:

  • 应该是override func isPartialStringValid(_ partialString: String, newEditingString newString: AutoreleasingUnsafeMutablePointer&lt;NSString?&gt;?, errorDescription error: AutoreleasingUnsafeMutablePointer&lt;NSString?&gt;?) -&gt; Bool {
  • 顺便说一句,你应该继承 NumberFormatter
  • 是的,我现在正在继承 NumberFormatter,而且似乎没有方法 isPartialStringValid 了?!至少 xcode 显示错误。

标签: swift cocoa swift3


【解决方案1】:

当我在NumberFormatter 的子类中输入isPartialS... 时,Xcode 建议这样做:

override func isPartialStringValid(_ partialString: String,
                                   newEditingString newString: AutoreleasingUnsafeMutablePointer<NSString?>?,
                                   errorDescription error: AutoreleasingUnsafeMutablePointer<NSString?>?) -> Bool {
    //...
}

您的方法标头似乎有多余的AutoreleasingUnsafeMutablePointer

【讨论】:

  • 我刚刚澄清了这个问题,我现在用 swift 3 继承 NumberFormatter 而不是 NSNumberFormatter,xcode 告诉我没有方法 isPartialStringValid 了。
  • 我还修复了类名,我确信我的 Xcode (8 8A218a) 已经建议了我上面显示的方法(子类化NumberFormatter),并且编译没有错误。
  • 我刚刚安装了其他更新+重启,现在显示带有新签名的 isPartialStringValid 方法
猜你喜欢
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2017-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多