Почему я не могу вызвать Core Data Accessors на super?

Справочная информация

Я использую довольно отличный mogenerator для автоматической генерации моих основных средств доступа к данным.

mogenerator структурирует классы следующим образом :

NSManagedObject
    _JGTrainingBase
        JGTrainingBase
            _JGTrainingGroup 
                JGTrainingGroup
  • Классы, начинающиеся с подчеркивания, генерируются машиной с помощью основных средств доступа к данным с помощью mogenerator.

  • Классы без подчеркивания редактируются человеком, поэтому вы можете добавлять туда собственные методы и не перезаписывать их при изменении модели данных и перезапуске генератора.

  • Сущность обучающей группы имеет отношение ко многим, называемое «потомками».

  • Я использую аксессоры Core Data для изменения своих отношений.

Чего я хочу

Я хочу обновить продолжительность - временный атрибут - перед добавлением дочернего объекта.

Проблема

Мой код

@implementation JGTrainingGroup
...
-(void)addChildrenObject:(JGTrainingGroup *)value_ {
    [self updateDuration];
    [super addChildrenObject:value_];
}
...
@end

Но когда я вызываю этот метод, я получаю сообщение об ошибке:

[JGTrainingGroup addChildrenObject:]: unrecognized selector sent to instance 0x10667fa30

Сгенерированный код

@interface _JGTrainingBase : NSManagedObject {}
// Method declarations
@end

@interface _JGTrainingBase (CoreDataGeneratedAccessors)
- (void)addChildrenObject:(JGTrainingBase*)value_;
- (void)removeChildrenObject:(JGTrainingBase*)value_;
// Lots more methods
@end

Вопросы

  1. Почему супер не ответить на метод addChildrenObject :? Это как-то связано с их добавлением в стиль категории?

  2. Как я могу получить доступ к сгенерированному методу Core Data из подкласса?

Примечание

Я понимаю, что могу добавить дочерний объект в набор с помощью primitiveValueForKey : и тому подобное, но это означает, что я переписываю основные средства доступа к данным, тем самым зря теряя время и, вероятно, делая мой код ошибочным. Я доверяю Apple ' методы были бы лучше, чем все, что я мог бы написать.

Спасибо за любой вклад, который помог мне понять, что здесь происходит.

5
задан John Gallagher 8 November 2010 в 16:28
поделиться