Почему awakeFromInsert вызывается дважды?
Я реализовал awakeFromInsert
установить некоторые значения по умолчанию и отношения в моих основных объектах данных. Однако метод вызывается дважды, а это означает, что добавляемые мной значения to-many добавляются несколько раз.
Я использую родительский и дочерний контексты управляемых объектов.
Что дает?
2 ответа
awakeFromInsert
будет вызываться при вставке объекта в его начальный контекст. Когда этот контекст сохраняется и изменения передаются в родительский контекст, он будет вызван снова.
Вы можете запросить self.managedObjectContext
свойство для определения, в каком случае вызывается метод. В зависимости от вашего конкретного случая использования вы можете проверить наличие или отсутствие parentContext
и действовать соответственно.
Благодаря помощи jrturton:
здесь самый простой: когда parentContext имеет значение null, означает, что при сохранении этого контекста вы можете использовать собственную логику, например, увеличивая номер таблицы
- (void)awakeFromInsert
{
if (!self.managedObjectContext.parentContext) {
//setting tableNumber
[self willChangeValueForKey:@"number"];
[self setPrimitiveNumber:tableNumber];
[self didChangeValueForKey:@"number"];
}
}