我有一个委托协议,其方法要求上有一个Generic Type参数,我有一个Generic Class,我希望它符合该委托。
问题在于我无法使该课程满足要求。
protocol ListDelegate: class {
func list<T>(_ list: List<T>, didUpdatedItems items: [T])
}
class List<T> {
var items: [T] {
didSet {
delegate?.list(self, didUpdatedItems: items)
}
}
weak var delegate: ListDelegate?
init(items: [T]) {
self.items = items
}
}
class ListWrapper<U>: ListDelegate {
let list: List<U>
var items: [U]
init(list: List<U>) {
self.list = list
items = list.items
}
func list<T>(_ list: List<T>, didUpdatedItems items: [T]) {
self.items = items
}
}
上述代码示例会导致cannot assign value of type '[T]' to type '[U]'
错误,但如果我从需求方法实现中删除<T>
通用类型,则会导致错误Type 'ListWrapper<U>' does not conform to protocol 'ListDelegate'
如何使Generic Class符合该委托?