无法覆盖 Swift 中 NSDictionary 的初始值设定项

Cannot override initializer of NSDictionary in Swift

我正在尝试扩展 Swift 中的 class NSDictionary 以包含在 init() 上设置的 NSDate。当我添加自定义 init() 时,出现编译器错误:

'required' initializer 'init(dictionaryLiteral:)' must be provided by subclass of 'NSDictionary'

但是,当我使用自动完成添加该初始化程序时,出现以下错误:

Declarations from extensions cannot be overridden yet

有没有什么方法可以覆盖 NSDictionary 的初始化程序,或者 Swift 还不能处理它吗?

这是我的 class:

class DateParam : NSDictionary {
    let date : NSDate

    init(date: NSDate) {
        super.init()
        self.date = date
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    required convenience init(dictionaryLiteral elements: (NSCopying, AnyObject)...) {
        fatalError("init(dictionaryLiteral:) has not been implemented")
    }
}

Swift 有一个官方的扩展机制,用于向 类 添加方法,但是当子类覆盖扩展方法时,编译器会报错。错误文本看起来很有希望,但(强调):

无法覆盖来自扩展的声明 正是那个悬而未决的“尚未”鼓励我相信 Apple 的工程师了解受保护的扩展模式等设计模式,并将更新 Swift 以支持它们。

检查 https://github.com/ksm/SwiftInFlux/blob/master/README.md#overriding-declarations-from-extensions