我对swift中的泛型类型不熟悉,然后我尝试学习和练习,但在编译器中遇到了错误。看一下 ObjectA 类中的 addNewType() 方法。有人可以帮助我吗?谢谢!
class TypeA: NSObject {
override init() {
print("typeA")
}
}
class ObjectA<T: TypeA>: NSObject {
var type = [T]()
init(type:T) {
self.type.append(type)
}
func addNewType() {
let newType = TypeA()
self.type.append(newType) <-- Cannot invoke "append" with an argument list of type '(TypeA)'
}
}
最佳答案
type
是 T
类型的数组。这意味着所有元素都必须是 T
类型。在 addNewType()
方法中,您尝试将 TypeA
类型的元素附加到 T
类型的数组中。这是类型不匹配。您只能将 T
放入数组中,但您正在尝试添加 TypeA
。这会导致错误。
如果您想让 TypeA
也放入数组中,请将其定义为 var type = [TypeA]()
。由于 T
被定义为 TypeA
的子类,因此您可以将 T
和 TypeA
的实例放入数组。
关于swift - 如何在 Swift2 中使用泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689916/