0
我的工作是使用下面的方法来确定是否需要一个核心数据迁移应用程序:为什么isConfiguration:compatibleWithStoreMetadata返回yes,即使使用映射模型?
- (BOOL)isMigrationNeeded {
BOOL isMigrationNeeded = NO;
NSError *error;
NSDictionary *sourceMetadata = [self sourceMetadata:&error];
if (sourceMetadata != nil) {
NSManagedObjectModel *destinationModel = [self managedObjectModel];
isMigrationNeeded = ![destinationModel isConfiguration:nil
compatibleWithStoreMetadata:sourceMetadata];
}
return isMigrationNeeded;
}
在数据库的最新版本中,增加一个属性,需要一个映射模型来设置其值。即使isConfiguration:compatibleWithStoreMetadata返回YES,该属性的值也会正确设置。结果,应用映射模型的代码永远不会被调用。
核心数据是否自动应用映射模型?
当数据库从最新版本迁移时,这一切都正常。但是我测试了从旧版数据库迁移并且未能设置新属性的值。
我想尝试在教程中找到的递归核心数据迁移方法,但如果isConfiguration:compatibleWithStoreMetadata返回YES,它将不会执行任何操作。
我会很乐意提供任何必要的附加信息。