我正在尝试编写一个返回泛型数组的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]()
您正在创建一个字典,其关键字为
T
type,值为AProtocol
type。要创建一个数组,只需使用:
var resultArray = [AProtocol]()
否则,如果您想要一个
AProtocol
数组:var resultArray = [T]()
注意,在函数声明中设置了实现
T
协议的约束,因此在函数体中使用T
时不必再次重复。