Swift错误:无法将类型B的值转换为强制类型A.

时间:2016-03-17 12:43:34

标签: swift generics

我有一个泛型类A及其子类B:

class A<T1: Any,T2: Any> {
    let x: T1
    let y: T2
    init (_ v1: T1, _ v2: T2) {
        self.x=v1
        self.y=v2
    }
}

class B<T: Any>: A<T,T> {
    init (_ v: T) {
        super.init(v,v)
    }
}

我需要一组不同的对象,它们都属于A:

的子类
var arr=[A<Any,Any>]()

但我无法将对象放入集合中,以下代码会导致错误:

let t=B(10)
arr.append(t as A<Any,Any>)

错误是:

  

无法转换类型&#39; B&#39;输入&#39; A&#39; (又名   &#39; A,协议&lt;&gt;&gt;&#39;)强制

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

t声明为B<Any>(编译器的推断类型为B<Int>):

let t: B<Any> = B(10)
arr.append(t) // works