2
任何人都知道如何在应用程序启动时获取核心数据模型版本?从appDelegate检索核心数据模型版本
我已经实现了轻量级迁移并且工作正常,但是我需要检查sqlite数据库是否基于迁移过程开始之前的旧模型版本。
在新模型中,我添加了一个新实体,但我需要使用旧模型的实体的值来填充它。我只想这样做一次。
有没有办法在appdelegate中做到这一点?
感谢, 最大
任何人都知道如何在应用程序启动时获取核心数据模型版本?从appDelegate检索核心数据模型版本
我已经实现了轻量级迁移并且工作正常,但是我需要检查sqlite数据库是否基于迁移过程开始之前的旧模型版本。
在新模型中,我添加了一个新实体,但我需要使用旧模型的实体的值来填充它。我只想这样做一次。
有没有办法在appdelegate中做到这一点?
感谢, 最大
我在我的喜好(的.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
}
}
谢谢,我会用同样的方法。马克斯 – masgar 2013-05-10 07:42:07
AFAIK核心数据只会尝试执行轻量级迁移,如果它发现它需要。如果它已经完成了,它将不会再尝试。您应该能够将您的实体特定的代码置于迁移方法中。 – ChrisH 2013-05-09 14:17:32
是的,但我想核心数据比较启动时的模型版本,以便知道是否执行迁移。我虽然有这个信息的地方。 – masgar 2013-05-09 16:25:24