2013-08-15 1 views
0

Мне нужно создать метод класса, и мне нужно проверить, соответствует ли конкретная строка свойству в классе.проверить, существует ли определенное свойство класса (а не экземпляр класса)

пример:

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

в другом классе:

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

Как я могу добиться этого?

ответ

3

Поскольку это @propery, у него есть метод getter и setter.

В вашем примере:

@property (nonatomic, strong) aType *property1; 

метод Getter следует называть property1 как ваша собственность, так что вы можете проверить, если ваш экземпляр класса отвечает на этот селектор, как это:

Преобразовать NSString селектора:

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, нет другого решения без создания экземпляра какого-либо класса? –

 Смежные вопросы

  • Нет связанных вопросов^_^