我试图编写一个返回通用数组的swift方法。我遗漏了一些细节,但保留了重要的一点,为了清晰起见......
protocol AProtocol {
func doSomething()
}
func decode<T: AProtocol>(jsonArray: Array<AnyObject>?) -> [T: AProtocol] {
//...
var resultArray = [T: AProtocol]()
resultArray.append
//...
}
当我指定数组包含类型T:AProtocol时,则不再出现追加方法
[T:AProtocol]没有名为append的成员
答案 0 :(得分:3)
在这行代码中:
var resultArray = [T: AProtocol]()
您正在创建一个字典,其密钥为T
类型且值为AProtocol
类型。
要创建AProtocol
数组,只需使用:
var resultArray = [AProtocol]()
否则,如果你想要一个T
数组:
var resultArray = [T]()
请注意,实现T
协议的AProtocol
约束是在函数声明中设置的,因此在函数中使用T
时不必重复它体。
答案 1 :(得分:1)
这个[T: AProtocol]()
不是数组,而是字典。