我使用核心數據來維護持久性存儲,並且數據庫可能增長得相當大。具有iPad 1上較大數據庫的用戶無法及時完成輕量級遷移,以便在該應用被iOS殺死之前完成該過程。如何遷移核心數據持久性存儲而不在iOS上終止進程?
我想要做的是每次服務器啓動時,檢查數據庫是否需要遷移(我無法在NSPersistentStoreCoordinator上找到此方法),如果它確實保持服務器啓動過程,直到數據庫被升級並在屏幕上顯示一個微調,然後在服務器啓動過程中繼續前進。這樣做的最好方法似乎是在服務器啓動方法中添加 - (BOOL)upgradeStoreNeedsUpgrade方法,但我找不到檢查的方法。我沒有看到NSPersistentStoreCoordinator或NSPersistentStore上的方法檢查給定URL中的數據庫與給定的託管對象模型的兼容性。
我的解決方案是否正確,如果是這樣,我如何檢查託管對象模型是否與給定URL中的SQLite文件兼容?
這是看門狗 - 這將是一個可以接受的解決方案,但爲了這樣做,我必須事先知道在我的CoreDataStackController(例如) - persistentStoreCoordinator不會返回,因爲它與商店不兼容給定URL。 – refulgentis 2012-01-27 02:27:00
您可以捕獲位於persistantStoreCoordinator的初始化方法中的錯誤,然後稍後在調度塊中處理它。 – MobileOverlord 2012-01-27 18:09:53