我正在使用XCode 9.2 / Swift 4.我正在从一个版本的CoreData数据库迁移到另一个版本(版本2 - >版本3)。版本3具有一个具有两个属性的新实体。第一个是标识符,第二个是序列号。序列号从0开始并递增到某个数字N.目标是存储每个标识符的序列号。我希望我可以使用数据库迁移过程来解决这个问题。
我的努力一直是移民政策。问题归结为“如何在迁移策略中保持状态,以便每次调用选择器方法'索引'都可以递增并返回值?”实际上我想要的是这个(NSNumber不可变,所以请忽略我假装它在下面):
class ModelMigration2to3: NSEntityMigrationPolicy {
private var incrementingValue: NSNumber = -1
@objc func index(_ uuid: NSString) -> NSNumber {
incrementingValue += 1
return incrementingValue
}
}
如果有更好的方法来实现目标(可能不使用迁移策略或以不同方式使用它?),我也对此非常感兴趣。
更新: 我没有找到以上述方式添加状态的方法。我在应用程序启动时添加了一个临时解决方案来添加序列号。