che sto cercando di fare questo, ma sto ottenendo alcuni problemigenerici Swift questione rinviata
Questo è CustomProtocol
protocol CustomProtocol {
}
SubCustomProtocol
protocol SubCustomProtocol: CustomProtocol {
}
SubCustomProtocolImplementation
class SubCustomProtocolImplementation: SubCustomProtocol {
}
Questo è CustomClass
class CustomClass<P: CustomProtocol> {
var customProtocol: P?
func doSomething() {
}
}
SubCustomClass
class SubCustomClass<P: SubCustomProtocol>: CustomSubClass {
}
E il mio BaseViewController
class BaseViewController<P: CustomProtocol, T: CustomClass<P>>: UIViewController {
var foo: T!
override func viewDidLoad() {
super.viewDidLoad()
foo?.doSomething()
}
}
mio ViewController
class ViewController<P: SubCustomProtocolImplementation, T: SubCustomClass<P>>: BaseViewController<P,T> {
override func viewDidLoad() {
super.viewDidLoad()
}
}
Nella riga in cui io chiamo foo? .doSomething() è dice che 'T' non è un sottotipo di 'CustomClass < 'P'>' e non so cosa sto facendo male
E nella dichiarazione ViewController si dice che "BaseViewController richiede che T ereditano da CustomClass < 'P'> "
Spero che tu possa aiutarmi!
Non ho ricevuto questo errore. Almeno nel parco giochi. Sei sicuro di fornire il contesto completo? – iyuna
@Iyuna mi mancava qualcosa mi dispiace! Ho modificato la domanda –
Sembra, un parametro di tipo non può essere limitato da una classe generica. Può essere vincolato da una classe o un protocollo. – CouchDeveloper