gpt4 book ai didi

objective-c - 在 Core Data 迁移后插入数据

转载 作者:搜寻专家 更新时间:2023-10-30 20:12:35 24 4
gpt4 key购买 nike

我有一个核心数据迁移,它引入了 2 个新的实体类型。迁移工作没有问题,但我想在迁移后使用默认数据填充数据库。

目前,我的方法是定义一个自定义的 NSEntityMigrationPolicy 并覆盖 endEntityMapping:manager:error:

- (BOOL)endEntityMapping:(NSEntityMapping *)mapping manager:(NSMigrationManager *)manager error:(NSError **)error {
if (![super endEntityMapping:mapping manager:manager error:error]) return NO;
Theme *defaultTheme = [NSEntityDescription insertNewObjectForEntityForName:@"Theme" inManagedObjectContext:[manager destinationContext]];
[defaultTheme setName:NSLocalizedString(@"Default", @"Default theme name")];
return YES;
}
  1. 这是一个好方法吗?
  2. 为什么不调用 Theme 的 -awakeFromInsert?

最佳答案

是的,这是一个好方法;可能是目前最好的方法。

主题的 -awakeFromInsert 未被调用,因为您的自定义子类在迁移期间未被使用。迁移管理器使用裸 NSManagedObject 执行所有迁移操作,而不是使用任何自定义对象。

同样,您不应该将其声明为 Theme(-insertNewObjectForEntityForName: inManagedObjectContext: 调用实际上返回一个普通的 NSManagedObject)那个方法也行。这只会导致代码维护过程中的困惑。

关于objective-c - 在 Core Data 迁移后插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com