MyClassA наследует от NSManagedObject.Как проверить, какой класс объявляет свойство из переменной NSAttributeDescription?
MyClassB наследуется от MyClassA.
У MyClassA есть свойство, назовем его classAProp.
MyClassB обладает свойством, назовем его классомBProp.
У меня есть экземпляр 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
Внутренне кажется, что можно получить доступ к объявляющий класс, но я не могу найти способ чтобы получить доступ к нему самостоятельно.
Мне удалось получить доступ к этой информации только через внутреннюю переменную '_properties' из NSEntityDescription. То есть '[entityDescriptionB valueForKeyPath: @" _ properties "]' будет содержать только одну запись - 'classBProp'. К сожалению, использование внутренних переменных стандартных фреймворков не очень хорошо для App Store, как вы знаете, конечно. – bteapot