2013-08-15 2 views
0

클래스 메서드를 만들어야하고 특정 문자열이 클래스의 속성과 일치하는지 확인해야합니다.클래스의 인스턴스가 아닌 클래스의 특정 속성이 있는지 확인하십시오.

예 :

+ (X*)createXwithProperty:(NSString*) aProperty 
{ 
    if([aClass haveProperty:aProperty]) 
    { 
     return create(X); 
    } 
    else return nil; 
} 

은 내가 어떻게 이것을 달성 할 수있다 : 다른 클래스

@interface aClass 
@property (nonatomic, strong) aType *property1; 
@end 

?

답변

3

@propery이므로 getter 및 setter 메소드가 있습니다.

가있는 NSString가 선택기로 변환 : 당신이 확인할 수 있도록 클래스의 인스턴스가이 같은 그 선택에 응답하는 경우 게터 방법은, 당신의 속성으로 property1를 호출 할 필요가

@property (nonatomic, strong) aType *property1; 

: 당신의 예에서

SEL selector = NSSelectorFromString(@"property1"); 
if ([aClassInstance respondsToSelector:selector]) { 
    NSLog(@"RESPONDS"); 
} 

죄송합니다. 답장을 빨리했습니다. 이제 클래스에 특정 속성이 있는지 확인하려고하지만 클래스 인스턴스가없는 것을 확인합니다. 클래스는이 특정 속성 사용이있는 경우 은 (기본적를 원칙 그것을 :) 클래스 인스턴스와 동일)를 참조하십시오 :

SEL selector = NSSelectorFromString(@"property1"); 
if ([aClassNotInstance instancesRespondToSelector:selector]) { 
    NSLog(@"RESPONDS"); 
} 
+0

지금 내가 NSManagedObject의 속성을 확인하기 위해 동일한 검증 메커니즘을 사용하려는의 문제는 이것이 할 수 없다는 것입니다 (이 포스트를보십시오 : http://stackoverflow.com/questions/11053974/nsfetchrequest-returning-nothing) 해결책은 NSEntityDescription을 생성하는 것입니다. 어떤 클래스를 인스턴스화하지 않고 다른 해결책이 없습니까? –