在ObjC中访问属性名称(例如self.theProperty)

时间:2010-03-24 08:19:01

标签: objective-c

我正在尝试读取属性名称,但我不知道如何。 是否可以在ObjC中从self.theProperty获取字符串“theProperty”?

我知道如何阅读所有属性(使用“class_copyPropertyList”)及其名称(使用“property_getName”)但无法找到执行以下操作的方法:

NSString *text = [self.theProperty somehowReadThePropertyName]; 
// expected result is: text == @"theProperty"

有什么想法吗?

2 个答案:

答案 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时,您将获得该属性的任何类型的对象。该对象通常不会知道它是具有特定属性名称的另一个对象的一部分。

您需要从更高级别获取属性名称,而不仅仅是调用它。