假设您有一个“Foo”类,其属性为“testProperty”。目的是将属性名称(而不是值)作为NSString
。这个问题可能与Get property name as a string重复。但这些答案对我没有帮助,因为:
NSStringFromSelector(@selector(prop))
- 无论如何你必须输入字符串。假设我有像
这样的功能- (NSString *)propertyToString:(id)propertyOfObject
在这种情况下,我可以使用,例如,排序
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:[self propertyToString:foo.testProperty] ascending:NO];
最后,代码将是干净的。
答案 0 :(得分:0)
这是不可能的。您想要获取属性名称,但是您需要传递一些内容以区别于其他属性。
答案 1 :(得分:0)
代码未经过测试。 应该是这样的:
#import <objc/runtime.h>
Class cls = [Foo class];
u_int count;
objc_property_t* props = class_copyPropertyList(cls,&count);
for(int i=0;i<count;i++){
NSString* propname = [NSString stringWithUTF8String:property_getName(props[i])];
if([propname hasPrefix:@"test"])
NSLog(@"foo");
}
您搜索的方法是选择道具集的子集。你唯一能做的就是应用某种过滤器 - 可能是上面属性的命名约定 - 将属性集减少到你想要的属性。