我不熟悉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)'
}
}
答案 0 :(得分:0)
type
是T
类型的数组。这意味着所有元素必须是T
类型。在addNewType()
方法中,您尝试将类型为TypeA
的元素附加到类型为T
的数组中。这是一种类型不匹配。您只能将T
放入数组中,但是您尝试添加TypeA
。这会导致错误。
如果您想将TypeA
放入数组中,请将其定义为var type = [TypeA]()
。由于T
被定义为TypeA
的子类,因此您可以将T
和TypeA
的实例放入数组中。