2

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

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

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

有没有办法在 appdelegate 中做到这一点?

谢谢,马克斯

4

1 回答 1

0

我通过在我的首选项(.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
    }
}
于 2013-05-09T14:31:18.287 回答