从appDelegate检索核心数据模型版本

时间:2013-05-09 13:34:49

标签: iphone ios core-data core-data-migration

有人知道如何在应用程序启动时获取核心数据模型版本吗?

我已经实现了轻量级迁移,但它运行正常但我需要在迁移过程开始之前检查sqlite db是否基于旧的模型版本。

在新模型中,我添加了一个新实体,但我需要使用旧模型的实体值来填充它。我只想这样做一次。

有没有办法在appdelegate中执行此操作?

谢谢, 最大

1 个答案:

答案 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
    }
}