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 normalNSEntityDescription
route and testrespondsToSelector:
on that.Since it's all Core Data, an alternative would be to ask the
NSManagedObjectModel
for the relevantNSEntityDescription
via itsentitiesByName
dictionary and inspect the entity description'spropertiesByName
dictionary.