gpt4 book ai didi

swift - 使用 Mirror 时使用未声明的类型 'valueMirror'

转载 作者:行者123 更新时间:2023-11-30 10:29:53 25 4
gpt4 key购买 nike

我正在尝试将结构映射到具有相同属性的其他类。但它一直显示此错误

Use of undeclared type 'valueMirror'

我的代码

extension Mapper {
func map<T:Object>(to type: T.Type){
let object = T()
let m = Mirror(reflecting: self)
for property in m.children {
guard let key = property.label else { continue }
let value = property.value
let valueMirror = Mirror(reflecting: value)

if valueMirror.displayStyle == .collection {
let array = value as! valueMirror.subjectType // <-- error
object.setValue(array.asRealMList, forKey: key)
} else {
object.setValue(value, forKey: key)
}

}
}
}

最佳答案

valueMirror.subjectType 就编译器而言不是一种类型。 as! 之后必须有一个编译时类型。

由于您使用 array 的唯一位置是 array.asRealMList,因此您可能只需将 value 转换为具有属性asRealMList。正如您在评论中所说,这是 Array 的扩展。

幸运的是 Array 是协变的,因此即使不知道它是什么类型的数组,您也可以将任何数组转换为 [Any]:

let array = value as! [Any]

关于swift - 使用 Mirror 时使用未声明的类型 'valueMirror',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59374008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com