0

我正在重写这个问题,以帮助澄清和摆脱我写的很多实际上没有帮助的代码。

我将 .xcdatamodel 用于我的初始架构,但我需要在运行时将实体添加到我的架构中,因此我需要添加一个新的 NSManagedObjectModel 并复制现有实体,然后添加新实体。

如果我先创建一个新的 NSPersistantStore,然后让我的 NSMigrationManager 迁移,我会收到一条错误消息,说明它无法将源模型移动到目标路径,因为文件已经存在。

如果我只是要求我的 NSMigrationManager 进行迁移,那么它只会崩溃而没有任何错误代码或调试器中的任何内容。

NSMappingModel *mappingModel = [NSMappingModel inferredMappingModelForSourceModel:originalModel destinationModel:newModel error:&error];
NSMigrationManager *manager = [[NSMigrationManager alloc] initWithSourceModel:originalModel destinationModel:newModel];

if (![manager migrateStoreFromURL:[originalStore URL]
                             type:NSSQLiteStoreType
                          options:[self autoMigrationOptions]
                 withMappingModel:mappingModel
                 toDestinationURL:[NSPersistentStore MR_urlForStoreName:[self nextStoreName]]
                  destinationType:NSSQLiteStoreType
               destinationOptions:[self autoMigrationOptions]
                            error:&error])
{
    return NO;
}

URL 都很好,当我将映射模型登录到控制台时,它看起来很好,管理器存在等等。在这种情况下,我还没有创建 NSPersistantStore,但是根据 NSMigrationManager 类引用,如果商店不存在然后会自动创建一个目标 URL。

有人有线索吗?

4

0 回答 0