最近开发过程中遇到了获取对象的所有属性以及设置属性值的问题,经过一番研究,最终实现了这个功能
直接上代码
extension NSObject{
/**
- 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
}
}
/**
*/
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
}
}
@H_996_301@如有问题欢迎随时联系我 ———— LC