有人知道如何在应用程序启动时获取核心数据模型版本吗?
我已经实现了轻量级迁移,但它运行正常但我需要在迁移过程开始之前检查sqlite db是否基于旧的模型版本。
在新模型中,我添加了一个新实体,但我需要使用旧模型的实体值来填充它。我只想这样做一次。
有没有办法在appdelegate中执行此操作?
谢谢, 最大
答案 0 :(得分:0)
我通过在我的首选项(.plist)中设置DB版本来解决这个问题。因此,如果我更改了数据库,我会在那里设置新的数据库版本并存储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
}
}