我正在尝试从一个.xcdatamodel文件迁移到另一个。我有一个NSEntityMigrationPolicy子类,它的名称是我在xcode-> .xcmappingmodel文件->实体->“自定义策略”字段中输入的。
我运行我的应用程序,该应用程序成功打开并运行了我的数据的先前版本,因此我只能假定基本迁移已成功。但是我的NSEntityMigrationPolicy子类方法没有被调用,所以我可以运行更多的迁移代码。
@implementation TestMigrationPolicy
- (BOOL)beginEntityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError * *)error
{
NSLog(@"this log is never shown!!!!");
return YES;
}
有谁知道为什么我的它可能不会被调用?我是核心数据迁移的新手,但现在我茫然不知为什么这种行为不符合我的预期。
如果有帮助,我将像这样创建持久性存储。
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption,
nil];
NSError *error = nil;
persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
NSLog(@"storeUrl %@", storeUrl);
if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
最佳答案
我知道这个问题很旧,但这可能会对其他人有所帮助!
这是因为设置了选项NSInferMappingModelAutomaticallyOption-这意味着正在运行轻量级迁移,而不是使用映射模型。删除此选项,将* NSMigratePersistentStoresAutomaticallyOption *保留在原位,所有选项均应正常工作。