Ios Swift:如何获得具有可用数组镜像类型的数组元素类型

Ios Swift:如何获得具有可用数组镜像类型的数组元素类型,ios,swift,generics,reflection,Ios,Swift,Generics,Reflection,假设我有一个数组的MirrorType 我需要获取此数组类型的元素类型,然后创建此类型的新元素 e、 g 我认为可以将arrayMirrorType.valueType转换为Array.Type,例如 let arrayType = arrayMirrorType.valueType as! Array<Any>.Type let elementType = arrayType.Generator.Element 让arrayType=arrayMirrorType.valueTy

假设我有一个数组的
MirrorType

我需要获取此数组类型的元素类型,然后创建此类型的新元素

e、 g

我认为可以将
arrayMirrorType.valueType
转换为
Array.Type
,例如

let arrayType = arrayMirrorType.valueType as! Array<Any>.Type
let elementType = arrayType.Generator.Element
让arrayType=arrayMirrorType.valueType为!数组.类型
让elementType=arrayType.Generator.Element
但是强制转换为
数组.Type
断言。

数组.Type
不是
数组.Type
的子类型,因此结果是
为nil
,您将获得强制转换的断言

这里可以做的是通过数组反射进行迭代,并查询每个项的类型

let arrayMirrorType = reflect(array)


var i=0的
;iJust意味着您将获取空数组作为输入参数。我怀疑是否可能获取其原始项目类型。我从所有者对象的属性获取镜像类型,其中数组是属性类型。不涉及数组实例,仅涉及类型。确定。通过将
arrayMirrorType.valueType转换为,仍然可以测试可能的项目类型?数组
。然后使用构造函数。看起来像是补丁。问题是候选类型未知。这就是为什么需要元素的类型。
let arrayMirrorType = reflect(array)
for var i = 0; i<arrayMirrorType.count; i++ {
    let elementType = arrayMirrorType[i].1.valueType

    if let intElementType = elementType as? Int.Type {
        let newElement = intElementType(777)
    }
}