Swift Runtime获取属性列表

通过以下方式调用可以获取Swift某一个类中的所有属性列表, 包括系统的类以及自定义的类

func getPropertyNames(cls: AnyClass) -> [String] {
    var peopertys: [String] = []
    var outCount: UInt32 = 0
    guard let peopers = class_copyPropertyList(cls.self, &outCount) else { return [] }
    let count:Int = Int(outCount)
    for i in 0...(count-1) {
            let aPro: objc_property_t = peopers[i]
            let proName = String(cString: property_getName(aPro))
            propertys.append(proName)
        }
    return propertys
}
  • 我们可以通过获取属性列表, 看到系统类有哪些属性, 并使用KVC去修改该属性的值
  • 如果在项目中你将部分数据存储在UserDefaults 中, 那么在用户退出, 或者你的token失效的时候需要清除掉UserDefaults 的内容, 这时就可以获取属性列表, 并遍历删除该属性对应的UserDefaults中的内容
    1. 你可以对比这个项目,来尝试获取属性列表的一个用途
      点它UserDefaultDemo
    1. 当然获取属性列表后我们就可以实现字典转模型的映射, 这也是Runtime的应用场景

你可能感兴趣的:(Swift Runtime获取属性列表)