我有一个协议(protocol)类似的结构,

protocol Page {
    func getAllProperties () -> [String: Any]
}

extension Page {
    public func getAllProperties () -> [String: Any] {
        var result: [String: Any] = [:]
        let mirror = Mirror(reflecting: self)
        print(mirror)
        for (labelMaybe, valueMaybe) in mirror.children {
            print(labelMaybe)
            guard let label = labelMaybe else {
                continue
            }

            result[label] = valueMaybe
        }

        return result
    }

}


struct Test: Page {
    static let aa = "aaaaa"
    let bb = "bbbb"
}

这里Test().getAllProperties()仅返回bb,它省略了static属性!

我也希望getAllProperties()也返回那些静态属性!

有什么办法吗?

最佳答案

据我所知,答案是否定的。对不起。即使在Mirror上获得type(of: self)也不会最终有任何 child 。

关于swift - 在Swift中,是否可以从结构中获取所有** static **属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46498219/

10-11 18:04