У меня есть основной NSManagedObjectContext
, который создается в appDelegate
.
Теперь я использую другой NSManagedObjectContext
для редактирования / добавления новых объектов, не затрагивая основной NSManagedObjectContext
, пока я не сохраню их.
Когда я сохраню второй NSManagedObjectContext
, изменения не отражаются в основном NSManagedObjectContext
, но если я открою базу данных .sqlite из симулятора, изменения будут правильно сохранены в базе данных .sqlite. Неважно, получу ли я данные снова,или даже если я создам третий NSManagedObjectContext
, я не смогу увидеть эти изменения из второго NSManagedObjectContext
, несмотря на то, что эти изменения действительно существуют на диске на данный момент.
Если я закройте и снова откройте приложение, все изменения есть.
Что может привести к тому, что основной NSManagedObjectContext
не увидит новые изменения, присутствующие в постоянном хранилище?
До этого подхода я использовал один NSManagedObjectContext
и undoManager
, но я хотел изменить его, чтобы использовать два разных NSManagedObjectContext
s.
Второй NSManagedObjectContext] [save1179252] :
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]);
}
}