arrays - 向下转换多个协议(protocol) Array<protocol<P1, P2>> 到 Array<P1>

标签 arrays swift protocols swift2

所以我有两个数组

var arrayOne:Array<protocol<P1,P2>>
var arrayTwo:Array<P1>

其中 P1 和 P2 是协议(protocol)。

问题是如何进行向下转型

arrayTwo = arrayOne as Array<P1>

我从 Xcode 得到的是:

Cannot convert value of type 'Array<protocol<P1, P2>>' to specified type 'Array<P1>'

最佳答案

您需要转换数组的元素,而不是数组本身。

arrayTwo = arrayOne.map { $0 as P1 }

或者正如 MartinR 所说,甚至不需要强制转换元素。

arrayTwo = arrayOne.map { $0 }

关于arrays - 向下转换多个协议(protocol) Array<protocol<P1, P2>> 到 Array<P1>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257678/

相关文章:

ios - 在 iOS Today 扩展中使用 Realm

java - 删除整数中的重复数字

arrays - 如何在 Swift 中将 int 数组分配给对象数组的相应属性?

javascript - 使用循环从多维数组中获取数据

IOS swift - 如何在点击文本字段时打开新的 View Controller 后结束文本字段中的编辑

swift - 在 Swift 中,如何在类型参数受协议(protocol)约束的泛型类中使用关联类型?

ios - 同时在两个不同的类中调用协议(protocol)

ios - swift 中 java 接口(interface)或 objective c 协议(protocol)的等价物是什么?

jquery - 通过jquery显示Json数组

c# - 为什么要将 List 转换为 Array