Cast任何通用类型

时间:2017-12-16 00:59:35

标签: swift generics

假设我有这样的结构:

Any

现在我有一个GenericStruct数组,并希望从这个数组获得所有let arrayOfGenericStructs = arrayOfAny.flatMap { $0 as? GenericStruct<Any> },无论泛型类型是什么。我原以为这会起作用:

GenericStruct

但事实并非如此。

我需要做些什么来获取所有B的数组?

1 个答案:

答案 0 :(得分:0)

我找到了一种丑陋的解决方案:

我定义了GenericStructProtocol符合的协议GenericStruct。现在我可以像这样创建一个GenericStruct的数组:

let arrayOfContainers = arrayOfAny.flatMap { $0 as? GenericStructProtocol }

仍然想知道这样做的正确方法是什么。