Я использую довольно отличный 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
Вопросы
Почему супер не ответить на метод addChildrenObject :? Это как-то связано с их добавлением в стиль категории?
Как я могу получить доступ к сгенерированному методу Core Data из подкласса?
Примечание
Я понимаю, что могу добавить дочерний объект в набор с помощью primitiveValueForKey : и тому подобное, но это означает, что я переписываю основные средства доступа к данным, тем самым зря теряя время и, вероятно, делая мой код ошибочным. Я доверяю Apple ' методы были бы лучше, чем все, что я мог бы написать.
Спасибо за любой вклад, который помог мне понять, что здесь происходит.