MyClassA继承自NSManagedObject。
MyClassB继承自MyClassA。
MyClassA有一个属性,我们称之为classAProp。
MyClassB有一个属性,我们称之为classBProp。
我有一个MyClassB的实例,myClassB。我想循环遍历此实例的托管属性,如下所示:
[myClassB.entity.attributesByName enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSAttributeDescription *attribute, BOOL *stop) {}]}
因此,在这个块中,对于每个属性(classAProp和classBProp),我如何检查MyClassA或MyClassB是否声明了这些属性。
在块中,如果我查看[属性描述],我会看到类似的内容:
Proxy for prop named classAProp on ed MyClassB, real (<NSAttributeDescription: 0x7fce49536be0>), name classAProp, isOptional 0, isTransient 0, entity MyClassA, renamingIdentifier classAProp, validation predicates (
), warnings (
), versionHashModifier (null)
userInfo {
}, attributeType 800 , attributeValueClassName NSNumber, defaultValue 1
在内部,似乎可以访问声明课程,但我似乎无法自己找到一种方法来访问它。
答案 0 :(得分:0)
我解决这个问题的方法是创建一个MyClassA的NSEntityDescription实例然后检查
[classADescription.attributesByName.allKeys containsObject:theKey];
这样我可以过滤掉MyClassA实现的属性。