[[MyObject class] respondsToSelector:...]
спрашивает, реагирует ли метаобъект на этот селектор. Таким образом, он спрашивает, существует ли метод класса с этим селектором. Ваш код вернет YES, если у вас есть:
+ (NSString *)myProperty;
Возвращает NO, потому что у вас есть эквивалент метода экземпляра:
- (NSString *)myProperty;
Вам нужно позвонить respondsToSelector:
на экземпляр вашего класса.
Обычно вы можете использовать instancesRespondToSelector:
непосредственно в метаклассе (так, [MyObject instancesRespondToSelector:...]
), но Core Data синтезирует соответствующие реализации методов только при создании объекта, так что это не стартер. Однако вы можете создать экземпляр по обычному маршруту NSEntityDescription
и проверить на нем respondsToSelector:
.
Поскольку это все базовые данные, альтернативой может быть запрос NSManagedObjectModel
соответствующего NSEntityDescription
через его словарь entitiesByName
и проверка propertiesByName
словаря описания сущности.