Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 无法使用类型为“([T.T])的参数列表调用“append”_Arrays_Swift_List_Types_Append - Fatal编程技术网

Arrays 无法使用类型为“([T.T])的参数列表调用“append”

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}

我想在协议中添加一种添加数组的方法,但它似乎不起作用。我应该怎么做,主要是因为数组中的数据类型也是泛型,我应该怎么做你有两个问题:首先,你需要调用appendcontentsOf:如果你想把一个数组附加到另一个数组中。其次,您需要确保泛型类型参数匹配,因为Swift中的数组只能包含相同类型的元素

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)
    }
}