Изменения, сохраненные из одного NSManagedObjectContext, не отражаются на основном NSManagedObjectContext

У меня есть основной 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]);
        }
    }
14
задан NSGod 12 April 2019 в 15:39
поделиться