Этот проект использует Mogenerator и Magical Record. Я обнаружил ошибку в том, что вызов awakeFromInsert
происходит дважды. Один раз для каждого из моих контекстов я предполагаю. Это проблема, потому что мне нужно слушать NSNotifications на этом NSManagedObject, как это:awakeFromInsert, вызываемый дважды с вложенными контекстами
- (void)awakeFromInsert
{
// Listen for a return from background mode
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enteringForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}
Но awakeFromInsert ПОЛУЧИТЬ называется дважды, который является довольно раздражающим. Я хочу вызвать метод ONCE, когда мой NSManagedObject будет сначала создан.
После поиска this solution seems to make a lot of sense. Однако я не вижу, как добавить категорию в NSManagedObject при использовании Mogenerator и MagicalRecord. Без какого-то сложного переопределения.
В MagicalRecord MR_createEntity
звонки
if ([self respondsToSelector:@selector(insertInManagedObjectContext:)])
{
id entity = [self performSelector:@selector(insertInManagedObjectContext:) withObject:context];
return entity;
}
Есть аккуратнее решение этой проблемы?
Mogenerator создает два класса для каждой сущности, «машиной «класс и« человеческий »класс. Вы можете добавлять методы в «человеческий» класс, как вам нравится, без необходимости в категории. –
Спасибо. Да, я уже это делаю. Я предполагаю, что проблема здесь в том, что мне нужен MagicalRecord для вызова моего нового метода, а не insertInManagedObjectContext, как показано выше. – JMWhittaker
Я еще не понял связи между проблемой «awakeFromFetch дважды» и «insertInManagedObjectContext:» (что может быть моей ошибкой). - Но вы не можете переопределить 'insertInManagedObjectContext:' в классе «человек»? –