swift 获取类的所有属性、获取对象的属性值、设置对象的属性值

最近开发过程中遇到了获取对象的所有属性以及设置属性值的问题,经过一番研究,最终实现了这个功能

直接上代码

extension NSObject{

    

    /**

     获取对象对于的属性值,无对于的属性则返回NIL

     

     – parameter property: 要获取值的属性

     

     – returns: 属性的值

     */

    func getValueOfProperty(property:String)->AnyObject?{

        let allPropertys = self.getAllPropertys()

        if(allPropertys.contains(property)){

            return self.valueForKey(property)

        }else{

            return nil

        }

    }

    

    /**

     设置对象属性的值

     

     – parameter property: 属性

     – parameter value:   

     

     – returns: 是否设置成功

     */

    func setValueOfProperty(property:String,value:AnyObject)->Bool{

        let allPropertys = self.getAllPropertys()

        if(allPropertys.contains(property)){

            self.setValue(value, forKey: property)

            return true

            

        }else{

            return false

        }

    }

    

    /**

     获取对象的所有属性名称

     

     – returns: 属性名称数组

     */

    func getAllPropertys()->[String]{

        

        var result = [String]()

        let count = UnsafeMutablePointer<UInt32>.alloc(0)

        let buff = class_copyPropertyList(object_getClass(self), count)

        let countInt = Int(count[0])

        

        for(var i=0;i<countInt;i++){

            let temp = buff[i]

            let tempPro = property_getName(temp)

            let proper = String.init(UTF8String: tempPro)

            result.append(proper!)

            

        }

        

        return result

    }

}

如有问题欢迎随时联系我 ———— LC

    原文作者:WestLC
    原文地址: https://blog.csdn.net/u012884714/article/details/50381146
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞