我已经创建了具有通用功能的协议。当我尝试实现该协议时,出现以下错误:
类型“ MyListener”不符合协议“ BaseDataListener”
如何解决?
谢谢!
//the protocol
protocol BaseDataListener: class {
func onDataLoaded<T>(_ items: [T])
}
//implementation
extension MyListener: BaseDataListener {
func onDataLoaded(_ items: [MyModel]) {
//so on
}
}
最佳答案
方法1
在associatedtype
中创建protocol
而不是将通用参数<T>
与方法onDataLoaded(_:)
一起使用,即
protocol BaseDataListener: class {
associatedtype T
func onDataLoaded(_ items: [T])
}
extension MyListener: BaseDataListener {
func onDataLoaded(_ items: [MyModel]) {
}
}
方法2
如果您只想将通用参数
<T>
与方法onDataLoaded(_:)
关联,请使用extension MyListener: BaseDataListener {
func onDataLoaded<MyModel>(_ items: [MyModel]) {
}
}