Постобработка для сгенерированных методов Core Data - PullRequest
1 голос
/ 25 марта 2012

У меня есть следующее: Базовая сущность данных с именем Event. Событие может иметь дату начала и окончания, которые пользователь может ввести. Однако событие может также иметь дочерние события, и в этом случае даты начала и окончания родительского события должны быть рассчитаны на основе дочернего события. Не существует программно наложенного ограничения на уровень вложенности событий. Для поддержки Core Data были сгенерированы следующие методы:

- (void)addSubEventsObject:(Event *)value;

- (void)removeSubEventsObject:(Event *)value;

В разных точках моего приложения мне нужно отображать информацию о событиях, что означает, что мне нужно будет рассчитать даты начала и окончания событий, которые имеют дочерние события.

В основном я вижу два сценария: (1) вычисление при необходимости, начальная и конечная даты родительских событий являются виртуальными (2) вычисление по мере добавления дочернего события и изменение начальной и / или конечной даты родителя на основе добавленного дочернего события событие.

Я испытываю желание написать сценарий (2), однако это означало бы, что мне потребуется выполнить некоторую постобработку после выполнения сгенерированных по умолчанию методов Core Data. Это возможно? Если да, то как?

РЕДАКТИРОВАТЬ: я ищу способ прикрепить некоторую обработку к сгенерированным методам, которая выполняется после запуска сгенерированных методов. Суть в том, что это должно пережить регенерацию класса Event базовыми данными.

Ответы [ 2 ]

1 голос
/ 27 марта 2012

Пара вариантов:

  1. Попросите вашего клиента взглянуть на mogenerator , целью которого является решение этой проблемы путем создания двух классов для каждой сущности, один из которых содержит ваш пользовательский код, а другой постоянно перезаписывается как изменения модели.

  2. Используйте категорию.

0 голосов
/ 26 марта 2012

Если я вас правильно понял, вы просто хотите изменить свойство даты вашего события после создания его дочернего события. Это возможно

в вашем

 -(void)addSubEventObject(Event*):value

или в другомметоды, где у вас есть ваше новое дочернее событие, вы можете легко установить дату нового родителя примерно так:

//generating a new child event here and calculating a date for it's parent
[[newChildEvent parentEvent]setStartDate:someGeneratedStartDate];
[context save:error];

РЕДАКТИРОВАТЬ

Вы можете попробоватьслушайте NSManagedObjectContextObjectsDidChangeNotification

Если вы хотите прочитать об этом, вот хорошая статья MZarra

http://www.cimgf.com/2011/10/14/parent-watching-its-child/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...