Я надеюсь, что кто-то сможет дать быстрый ответ на этот вопрос, он, вероятно, будет действительно очевидным, но я просто не могу обдумать это.
У меня есть приложение для Mac, в котором я использую Core Data для сохранения информации. Все это работает нормально, и когда я создаю новые данные, они хорошо отображаются в приложении, а когда я закрываю приложение, [managedObjectContext save: & error] вызывается успешно и данные сохраняются в постоянном хранилище на диске. *
То, что я хочу сделать, - это сохранять основные данные в любое время при изменении любой информации. Причина этого заключается в том, чтобы предотвратить любую потерю данных в случае сбоя приложения, и, поскольку я буду предоставлять пользователям возможность сохранять данные в dropbox / idisk, было бы неплохо сразу сохранить информацию, так как изменения должны появиться в другие компьютеры, к которым они обращаются с теми же данными.
До сих пор я нашел следующее, используя NSNotificationCenter:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(saveDatabaseInBackground)
name:NSManagedObjectContextObjectsDidChangeNotification
object:managedObjectContext];
Который при каждом изменении данных успешно вызывает:
- (void) saveDatabaseInBackground
{
NSError *error = nil;
if ([managedObjectContext hasChanges])
{
[managedObjectContext save:&error];
}
}
Однако, похоже, что вызов метода save для контекста управляемого объекта приводит к тому, что отправляется одно и то же уведомление, что приводит к бесконечному циклу и вызывает сбой.
Кто-нибудь есть какие-либо идеи о том, как решить?
Спасибо
Rob