如何检查哪个类从NSAttributeDescription变量声明属性?

时间:2015-03-28 14:29:19

标签: core-data

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

在内部,似乎可以访问声明课程,但我似乎无法自己找到一种方法来访问它。

1 个答案:

答案 0 :(得分:0)

我解决这个问题的方法是创建一个MyClassA的NSEntityDescription实例然后检查

[classADescription.attributesByName.allKeys containsObject:theKey];

这样我可以过滤掉MyClassA实现的属性。