Swift:如何获取具有可用数组MirrorType的数组元素类型



假设我有一个数组的MirrorType

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

例如

let elementType : Any.Type = some_magic_function(arrayMirrorType)
var arrayElement = some_magic_element_constructor(elementType)

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

let arrayType = arrayMirrorType.valueType as! Array<Any>.Type
let elementType = arrayType.Generator.Element

但选角到Array<Any>.Type断言。

Array<Any>.Type不是Array<String>.Type的子类型,所以结果是nil,并且您得到了强制转换的断言。

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

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)
    }
}

相关内容

  • 没有找到相关文章

最新更新