Arrays 无法使用类型为“([T.T])的参数列表调用“append”
我想在协议中添加一种添加数组的方法,但它似乎不起作用。我应该怎么做,主要是因为数组中的数据类型也是泛型,我应该怎么做你有两个问题:首先,你需要调用appendcontentsOf:如果你想把一个数组附加到另一个数组中。其次,您需要确保泛型类型参数匹配,因为Swift中的数组只能包含相同类型的元素Arrays 无法使用类型为“([T.T])的参数列表调用“append”,arrays,swift,list,types,append,Arrays,Swift,List,Types,Append,我想在协议中添加一种添加数组的方法,但它似乎不起作用。我应该怎么做,主要是因为数组中的数据类型也是泛型,我应该怎么做你有两个问题:首先,你需要调用appendcontentsOf:如果你想把一个数组附加到另一个数组中。其次,您需要确保泛型类型参数匹配,因为Swift中的数组只能包含相同类型的元素 protocol UtimesListResponseProtocol:HandyJSON{ associatedtype T var slide: Int {get set}
protocol UtimesListResponseProtocol:HandyJSON{
associatedtype T
var slide: Int {get set}
var top: String {get set}
var bottom: String {get set}
var hasMore: Bool {get set}
var list: [T] {get set}
func add<M:UtimesListResponseProtocol>(data:M)
}
extension UtimesListResponseProtocol{
mutating func add<T:UtimesListResponseProtocol>(data:T){
slide = data.slide
top = data.top
bottom = data.bottom
hasMore = data.hasMore
list.append(data.list)
}
}
因为您的列表是T类型,并且您正在尝试添加M,所以请删除associatedType、change1-var list:[UtimesListResponseProtocol]{get set}、change2-list.appendcontentsOf:data.list
extension UtimesListResponseProtocol{
mutating func add<List:UtimesListResponseProtocol>(data:List) where List.T == T {
slide = data.slide
top = data.top
bottom = data.bottom
hasMore = data.hasMore
list.append(contentsOf: data.list)
}
}