swift - 如何在 Swift2 中使用泛型类型

标签 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)'
    }
}

最佳答案

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

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

关于swift - 如何在 Swift2 中使用泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689916/

相关文章:

function - 大括号的 Swift 行业标准

ios - XEP-0363 : HTTP File Upload in Swift

ios - 在 View Controller 之间传递数据

ios - 更新 UICollectionViewCell 中的渐变

ios - 来自父级的子 NSManagedObjectContext 更新

swift - 应用程序激活后保持游戏暂停?

ios - 更改 UIImage 中某些像素的颜色

ios - 单击按钮时出现奇怪的错误(Swift Xcode)

swift - 使用 contains() 检查是否在 Swift 中按下后退按钮

ios - 带部分的 UiTableView 的数据 + UISegmentedControl