我正在尝试将结构映射到具有相同属性的其他类。但它一直显示此错误
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/