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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值