我正在尝试编写一个返回泛型数组的Swift方法。我遗漏了一些细节,但保留了一些不起作用的重要信息…

protocol AProtocol {
    func doSomething()
}

func decode<T: AProtocol>(jsonArray: Array<AnyObject>?) -> [T: AProtocol] {
    //...
    var resultArray = [T: AProtocol]()
    resultArray.append
    //...
}

当我指定数组包含t:aprotocol类型时,append方法不再出现。
[T:Aprotocol]没有名为Append的成员

最佳答案

在这行代码中:

var resultArray = [T: AProtocol]()

您正在创建一个字典,其关键字为Ttype,值为AProtocoltype。
要创建一个数组,只需使用:
var resultArray = [AProtocol]()

否则,如果您想要一个AProtocol数组:
var resultArray = [T]()

注意,在函数声明中设置了实现T协议的约束,因此在函数体中使用T时不必再次重复。

10-06 06:06