我正在尝试读取属性名称,但我不知道如何。 是否可以在ObjC中从self.theProperty获取字符串“theProperty”?
我知道如何阅读所有属性(使用“class_copyPropertyList
”)及其名称(使用“property_getName
”)但无法找到执行以下操作的方法:
NSString *text = [self.theProperty somehowReadThePropertyName];
// expected result is: text == @"theProperty"
有什么想法吗?
答案 0 :(得分:1)
以下是如何获取属性的getter的字符串表示形式:
NSString *selectorName = NSStringFromSelector(@selector(theProperty));
由于您已经使用property_getName
来返回C字符串,因此您可以获得NSString
这样的内容:
NSString *propertyName = [NSString stringWithCString:property_getName(property)
encoding:NSUTF8StringEncoding];
但是,你想要完成什么?可能有更好的方法来做你需要做的事情。
答案 1 :(得分:0)
您遇到的一个问题是,当您致电self.theProperty
时,您将获得该属性的任何类型的对象。该对象通常不会知道它是具有特定属性名称的另一个对象的一部分。
您需要从更高级别获取属性名称,而不仅仅是调用它。