Próbuję rozszerzyć klasy NSDictionary w Swift, aby zawierał NSDate, który jest ustawiony na init(). Kiedy dodać mój własny init(), pojawia się błąd kompilator:Nie można przesłonić inicjalizatora NSDictionary w Swift
'required' initializer 'init(dictionaryLiteral:)' must be provided by subclass of 'NSDictionary'
Kiedy jednak dodać, że inicjator wykorzystaniem autouzupełniania, pojawia się następujący błąd:
Declarations from extensions cannot be overridden yet
Czy istnieje sposób na zastąpienie inicjalizatora NSDictionary lub czy Swift po prostu tego nie obsługuje?
Oto moja klasa:
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")
}
}
Więc myślę, że to nie jest jeszcze możliwe, aby zastąpić inicjator dla NSDictionary w Swift. Kompilator wymaga, abyś nadpisał "init (dictionaryLiteral :)", ale jednocześnie na to nie pozwala. Naprawdę mam nadzieję, że Swift wkrótce doda tę możliwość. – Mel
Kulawizna Apple! –
Nadal ** nie ** naprawiono za pomocą Swift 4. –