我发现了一种更简单的方法来跳过特定实体的迁移,而无需从映射模型中删除映射(如果实体之间存在复杂的关系,这可能会导致映射模型无效)。
这个想法是一个什么都不做并成功验证迁移步骤的迁移策略:
迅速:
import CoreData
final class DeleteEntityMigrationPolicy: NSEntityMigrationPolicy {
override func createDestinationInstances(forSource sInstance: NSManagedObject,
in mapping: NSEntityMapping,
manager: NSMigrationManager) throws { }
override func createRelationships(forDestination dInstance: NSManagedObject,
in mapping: NSEntityMapping,
manager: NSMigrationManager) throws { }
override func performCustomValidation(forMapping mapping: NSEntityMapping,
manager: NSMigrationManager) throws { }
}
目标-C:
// DSDeleteEntityMigrationPolicy.h
#import <CoreData/CoreData.h>
@interface DSDeleteEntityMigrationPolicy : NSEntityMigrationPolicy
@end
// DSDeleteEntityMigrationPolicy.m
#import "DSDeleteEntityMigrationPolicy.h"
@implementation DSDeleteEntityMigrationPolicy
- (BOOL)createDestinationInstancesForSourceInstance:(NSManagedObject *)sInstance
entityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError *__autoreleasing _Nullable *)error {
return YES;
}
- (BOOL)createRelationshipsForDestinationInstance:(NSManagedObject *)dInstance
entityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError *__autoreleasing _Nullable *)error {
return YES;
}
- (BOOL)performCustomValidationForEntityMapping:(NSEntityMapping *)mapping
manager:(NSMigrationManager *)manager
error:(NSError *__autoreleasing _Nullable *)error {
return YES;
}
@end