如何在没有进程被iOS杀死的情况下迁移Core Data持久存储?

时间:2012-01-27 01:54:20

标签: objective-c ios core-data

我使用Core Data来维护持久性存储,并且数据库可以变得非常大。我在iPad 1上拥有较大数据库的用户无法及时完成轻量级迁移,以便在应用程序被iOS杀死之前完成该过程。

我想要做的是每次服务器启动时,检查是否需要迁移数据库(我在NSPersistentStoreCoordinator上找不到这个方法),如果它确实保持服务器启动过程直到数据库升级并在屏幕上显示微调器,然后一旦服务器启动过程继续前进。这样做的最佳方法似乎是在服务器启动方法中添加 - (BOOL)upgradeStoreNeedsUpgrade方法,但我找不到检查方法。我没有在NSPersistentStoreCoordinator或NSPersistentStore上看到方法来检查给定URL的数据库与给定托管对象模型的兼容性。

我的解决方案是否正确,如果是这样,我如何检查托管对象模型是否与给定URL上的SQLite文件兼容?

1 个答案:

答案 0 :(得分:1)

您可以尝试在分派块中包装核心数据轻量级迁移代码。这应该将其转移到后台线程,以便您可以通过应用程序启动监视程序,这可能会杀死您的应用程序。它或者你正在运行设备内存。