У меня есть основной NSManagedObjectContext
который создан в appDelegate
.
Теперь я использую другой NSManagedObjectContext
для редактирования/добавления новых объектов, не затрагивая основной NSManagedObjectContext
, пока я не сохраню их.
Когда я сохраняю второй NSManagedObjectContext
, изменения не отражаются в основном NSManagedObjectContext
, но если я открою базу данных .sqlite из симулятора, изменения будут правильно сохранены в базе данных .sqlite. Не имеет значения, получу ли я данные снова или даже если создам третий NSManagedObjectContext
, я не могу увидеть эти изменения во втором NSManagedObjectContext
, несмотря на тот факт, что эти изменения действительно существуют на диске на данный момент.
Если я выйду и снова открою приложение, все изменения будут.
Что может привести к тому, что основной NSManagedObjectContext
не увидит новые изменения, присутствующие в постоянном хранилище?
До этого подхода я использовал один NSManagedObjectContext
и undoManager
, но я хотел изменить его, чтобы использовать два разных NSManagedObjectContext
.
Второе сохранение NSManagedObjectContext
:
NSError* error = nil;
if ([managedObjectContext hasChanges]) {
NSLog(@"This new object has changes");
}
if (![managedObjectContext save:&error]) {
NSLog(@"Failed to save to data store: %@", [error localizedDescription]);
NSArray* detailedErrors = [[error userInfo] objectForKey:NSDetailedErrorsKey];
if(detailedErrors != nil && [detailedErrors count] > 0) {
for(NSError* detailedError in detailedErrors) {
NSLog(@" DetailedError: %@", [detailedError userInfo]);
}
}
else {
NSLog(@" %@", [error userInfo]);
}
}