【发布时间】:2019-01-09 08:22:25
【问题描述】:
我有一个关于镜面反射的问题。 我将我的结构转换为镜像以遍历所有属性以获取值,并且在我遍历它并更改属性中的值之后,我需要再次将镜像转换为具有我编辑但我不能的值的原始结构,这很快语言有办法进行这种转换吗?
下面的代码
//MARK:- loop get tags
func getTags(filter: Any){
let getTags = Mirror(reflecting: filter)
for (tag) in getTags.children {
if let getTag = tag.value as? String {
if let _ = Int(getTag) {
}else {
if getTag != "" && getTag != "All" {
arrayOfTags.append(getTag)
}
}
}// if let
}// end for loop
}
谢谢
【问题讨论】:
-
你到底需要这个做什么?使用
Mirror很昂贵,而且由于 Swift 是类型安全的语言,你应该知道你正在使用哪些类型 -
我有一个自定义结构,我使用反射来获取属性并遍历所有。要在编辑后对值执行某些操作,我需要将其转换回自定义结构并通过通知中心发送
-
你为什么不直接使用你的
struct?如果你确切地知道你正在使用什么类型,那么使用Mirror是没有意义的。 -
正如我告诉你的,我需要通过循环访问我的自定义结构中的所有属性,它有很多属性。我不能使用结构,因为我必须遍历所有属性和编辑的值取决于某些条件,所以我使用镜像
-
你有没有设法解决这个问题?