【问题标题】:This NSPersistentStoreCoordinator cannot perform a save operation此 NSPersistentStoreCoordinator 无法执行保存操作
【发布时间】:2023-03-16 08:54:01
【问题描述】:

当我登录应用程序时,它似乎在 NSManagedObjectContext *managedObjectContext = self.managedObjectContext;在以下保存上下文方法中并给出错误“此 NSPersistentStoreCoordinator 没有持久存储(架构不匹配或迁移失败)。它无法执行保存操作。”,

- (BOOL) saveContext
{
    @synchronized (_localStorage) {
        //NSLog(@"----------------------------Save context called---------------------------");
        BOOL result = TRUE;
        NSError *error = nil;
        NSManagedObjectContext *managedObjectContext = self.managedObjectContext;

        if (managedObjectContext != nil)
        {
            if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error])
            {
                NSLog(@"----------------------------Save context failed---------------------------");
                result = FALSE;
                NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            }
        }

        //NSLog(@"----------------------------Save context completed---------------------------");

        return result;
    }
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
    {
        if (__persistentStoreCoordinator != nil)
        {
            return __persistentStoreCoordinator;
        }

        NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Badger.sqlite"];

        NSError *error = nil;
        __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];

        NSDictionary *options = @{
                                  NSMigratePersistentStoresAutomaticallyOption : @YES,
                                  NSInferMappingModelAutomaticallyOption : @YES,
                                  NSSQLitePragmasOption : @{@"journal_mode" : @"DELETE"}
                                  };

        if(![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
        {
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        }

        return __persistentStoreCoordinator;
    }

【问题讨论】:

  • 好的。现在呢?
  • 调试并检查manageObjectContext.persistentStoreCoordinator的值是否设置正确

标签: ios objective-c local-storage nsmanagedobjectcontext nspersistentstore


【解决方案1】:

每当我们修改 Core Data 应用程序的数据模型时,持久化存储就会与数据模型不兼容并导致崩溃。为了解决这个问题,我们必须进行数据迁移。 对于 Core Data 迁移教程,请按照以下文章进行操作。 http://code.tutsplus.com/tutorials/core-data-from-scratch-migrations--cms-21844

【讨论】:

    猜你喜欢
    • 2013-03-07
    • 2016-02-04
    • 2020-05-30
    • 2012-08-18
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2011-10-20
    • 2012-12-20
    相关资源
    最近更新 更多