【发布时间】:2016-12-02 22:54:20
【问题描述】:
我正在开发一个应用程序,它使用以下方法来确定是否需要迁移核心数据:
- (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。因此,应用映射模型的代码永远不会被调用。
Core Data 是否以某种方式自动应用映射模型?
从最新版本迁移数据库时,这一切正常。但是我测试了从旧版本的数据库迁移,它无法设置新属性的值。
我想尝试在教程中找到的递归核心数据迁移方法,但如果 isConfiguration:compatibleWithStoreMetadata 返回 YES,它将不会做任何事情。
我很乐意提供任何必要的附加信息。
【问题讨论】:
标签: objective-c core-data-migration