任何人都知道如何在应用程序启动时获取核心数据模型版本?
我已经实现了轻量级迁移,它工作正常,但我需要在迁移过程开始之前检查 sqlite db 是否基于旧模型版本。
在新模型中,我添加了一个新实体,但我需要用旧模型的实体的值填充它。我只想这样做一次。
有没有办法在 appdelegate 中做到这一点?
谢谢,马克斯
任何人都知道如何在应用程序启动时获取核心数据模型版本?
我已经实现了轻量级迁移,它工作正常,但我需要在迁移过程开始之前检查 sqlite db 是否基于旧模型版本。
在新模型中,我添加了一个新实体,但我需要用旧模型的实体的值填充它。我只想这样做一次。
有没有办法在 appdelegate 中做到这一点?
谢谢,马克斯
我通过在我的首选项(.plist)中设置数据库版本解决了这个问题。因此,如果我更改数据库,我会在其中设置新的数据库版本,并将上次开始的版本存储在NSUserDefaults
.
NSNumber *newDbVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"DBVersion"];
NSNumber *oldDbVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"DBVersion"];
if (oldDbVersion == nil)
{
// part without handling, so you know the max db version.
}else
{
if([oldDbVersion intValue] < [newDbVersion intValue])
{
// try the liteweight migration and if that failed, migrate by hand
}
}