I am currently facing the problem to check whether a property of an Object (NSManagedObject) exists or not.
Unfortunately the method
[[MyObject class] respondsToSelector:@selector(myProperty)];
always returns NO.
I think it's because the property generated by CoreData is a new style property ala
@property (nonatomic, strong) NSString *myProperty
So any ideas how to solve this issue?
I would really appreciate all of your suggestions ;)
Thanks in advance! Alex
[[MyObject class] respondsToSelector:...]asks whether the metaobject responds to that selector. So, in effect, it asks whether there is a class method with that selector. Your code would return YES if you had:It returns NO because you have the equivalent of the instance method:
You need to call
respondsToSelector:on an instance of your class.You could normally use
instancesRespondToSelector:directly on the metaclass (so,[MyObject instancesRespondToSelector:...]) but Core Data synthesises the relevant method implementations only when you create an object, so that's a non-starter. You could however create an instance via the normalNSEntityDescriptionroute and testrespondsToSelector:on that.Since it's all Core Data, an alternative would be to ask the
NSManagedObjectModelfor the relevantNSEntityDescriptionvia itsentitiesByNamedictionary and inspect the entity description'spropertiesByNamedictionary.