2010-03-24 5 views
0

속성 이름을 읽으려고하고 있지만 해안가가 아닙니다. ObjC에서 "theProperty"문자열을 self.theProperty에서 가져올 수 있습니까?ObjC의 액세스 속성 이름 (예 : self.theProperty)

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

어떤 아이디어 :

나는 ("property_getName"와) 모든 ("class_copyPropertyList"과) 특성과 자신의 이름을 읽을 수 있지만 같은 것을 할 수있는 방법을 찾을 수있는 방법을 알아?

답변

1

당신이 당신의 속성에 대한 게터의 캐릭터 라인 표현을 얻을 것입니다 방법은 다음과 같습니다

NSString *selectorName = NSStringFromSelector(@selector(theProperty)); 

그리고 당신은 이미 C 문자열을 반환하는 property_getName을 사용한 적이 있기 때문에,이 같은 NSString를 얻을 수 있습니다 :

NSString *propertyName = [NSString stringWithCString:property_getName(property) 
              encoding:NSUTF8StringEncoding]; 

그러나 무엇을 성취하려고합니까? 당신이해야 할 일을하는 훨씬 더 좋은 방법이있을 수 있습니다.

+0

감사합니다. 코드 NSString * selectorName = NSStringFromSelector (@selector (theProperty)); 일하고있다. 하지만 다른 버전은 NSString을 반환하지 않으며 XCode는 "호환되지 않는 포인터 유형에서 'property_getName'의 인수 1을 전달하는 것으로 불평합니다. –

+0

'property_getName' 함수로 넘겨주는 것이 잘못된 타입입니다. – kubi

0

문제는 self.theProperty으로 전화 할 때 해당 속성의 유형이 무엇이든 개체를 가져 오는 것입니다. 이 객체는 일반적으로 특정 객체 이름을 가진 다른 객체의 일부라는 것을 알지 못합니다.

방금 ​​호출하는 것보다 상위 수준에서 속성 이름을 가져와야합니다. 여기