我必须在第一个版本中启用版本控制,以便在后续版本中使用轻量级迁移



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

我在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];

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

最新更新