如何在Swift2

时间:2016-01-09 05:08:47

标签: swift

我不熟悉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)'
    }
}

1 个答案:

答案 0 :(得分:0)

typeT类型的数组。这意味着所有元素必须是T类型。在addNewType()方法中,您尝试将类型为TypeA的元素附加到类型为T的数组中。这是一种类型不匹配。您只能将T放入数组中,但是您尝试添加TypeA。这会导致错误。

如果您想将TypeA放入数组中,请将其定义为var type = [TypeA]()。由于T被定义为TypeA的子类,因此您可以将TTypeA的实例放入数组中。