无法覆盖 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
我正在尝试扩展 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