您的位置:首页 > 移动开发 > IOS开发

iOS 获取可采用KVC为对象赋值的keys

2016-07-12 17:41 155 查看

获取可采用KVC为对象赋值的keys

有时候为了解耦,需要使用KVC来为对象赋值.那么就需要判断想要赋值的key是否能够赋值给对象.

其实这个问题说来也简单,只需要两步:

1.获取对象的属性列表

2.遍历属性列表,查看key是否包含其中(可用NSSet取交集)

代码:

/**
*  获取允许为类赋值的关键字数组
*/
- (NSSet *)allowedPropertyNamesFromNames:(NSArray *)names InClass:(Class)aClass{
//想要赋值的keys
NSMutableSet *namesSet = [NSMutableSet setWithArray:names];
//允许赋值的keys
NSMutableSet *allowedNamesSet = [NSMutableSet set];

//获取属性列表
unsigned int count;
objc_property_t *properties = class_copyPropertyList(aClass, &count);
for(int i = 0; i < count; i++)
{
objc_property_t property = properties[i];

NSString *name = [NSString stringWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
[allowedNamesSet addObject:name];

}
free(properties);

//取交集
[namesSet intersectSet:allowedNamesSet];

return namesSet;
}


注意

1.需要
#import "objc/runtime.h"


2.class_copyPropertyList 获取到的属性列表,不包括父类属性.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  KVC 属性