我必须在第一个版本中启用版本控制才能在后续版本中使用轻量级迁移吗?

我担心的是后续版本中数据模型的变化。

我在Xcode中创建了一个新的xcdatamodel文件,默认情况下没有版本化。 我知道你可以点击某处并使其成为“第一个版本”。 在“组和文件”树中,xcdatamodel文件左侧有一个粗黑色箭头,您可以单击该箭头查看其中的所有版本。

我的文件没有那么粗的箭头所以没有版本化。

这会在以后引起大问题吗? 是否需要从一开始就对其进行版本化以便稍后进行轻量级迁移? 将应用程序发送给用户后,将无法再进行更改。

您不需要在第一个版本中设置轻量级迁移。 当您决定迁移时,您需要做两件事。 首先,您必须保留数据模型的每个版本的副本。 这些模型通常保存在.xcdatamodeld文件中。 或者,您可以保留一堆.xcdatamodel文件。 但是,最好使用.xcdatamodeld文件来保持一切有条理。 其次,您必须使用持久性存储协调器激活轻量级迁移。 创建持久性存储协调器时,您将执行以下操作:

__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; // Automatically migrates the model when there are small changes. NSDictionary * options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; [__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]; 

请记住,轻量级迁移只能做很多事情。 如果需要进行更重的更改,则需要创建映射模型。