NSEntityMigrationPolicy子类

NSEntityMigrationPolicy子类

我正在尝试从一个.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 *保留在原位,所有选项均应正常工作。

10-07 18:46