2011-03-10 88 views
2

我的工作,我創建我的應用程序sqllite文件的實例,並對其進行設置,使用戶可以將備份文件通過電子郵件發送給他/她自己的電子郵件項目。我已經在iStudiezPro上看到了這一點,它的功能奇蹟般。備份恢復SQLite的核心數據iphone

我可以得到電子郵件打開應用程序文件和恢復的問題是,持久性存儲,更新應用程序將需要重新加載。 當回來的應用程序,我這樣做:

[persistentStoreCoordinator release]; 
persistentStoreCoordinator = nil; 

[managedObjectContext release]; 
managedObjectContext = nil; 

[primaryUserManagedObject release]; 
primaryUserManagedObject = nil; 

[self managedObjectContext]; 

我只需要找到應用程序的方式應用程序運行時重建核心數據堆棧。任何幫助,將不勝感激。

回答

2

最簡單的辦法是隻保存環境,然後存儲文件複製到文檔中使用標準的文件管理方法的文件夾。如果你確定沒有正在進行的核心數據操作,我認爲你不會有任何腐敗問題。

如果你想額外的保護,複製之前,釋放和爲零的managedObject環境,然後持久存儲協調。複製完成後,重建堆棧。沒有理由重新啓動應用程序本身。您可能必須創建一個專用對象來管理Core Data堆棧,以便它可以打開和關閉。

+0

本質上,這就是我正在做的。在關閉sqllite文件後,我嘗試在我的應用程序委託中重新初始化我的managedObjectContext,請記住,在我的整個應用程序中,我引用了我的appDelegate中的primaryUserManagedObject和managedObjectContext。我遇到的問題是我不明白如何重建我的Core Data堆棧。 – zaid 2011-03-14 20:31:00

+0

如果您在Xcode使用默認的核心數據模板,僅僅訪問managedObjectContext將觸發核心數據堆棧初始化,因爲背景是,如果它不存在的訪問創造,這反過來又觸發初始化的管理對象模型,持久性商店協調員和持久性商店文件。因此,如果您將所有內容都清零並重新訪問它們,則應該使用新實例重新初始化。我認爲。我沒有那樣做過。如果你看看模板,傾向於構建堆棧並不難。它顯示了你幾乎所有的東西。 – TechZen 2011-03-14 21:55:02

0

我已上傳一個示例應用程序,它提供備份和恢復功能的多種不同的方式,包括本地備份,通過iTunes複製備份和從iCloud中,郵件備份,電子郵件中導入,文件的拷貝。有關展示這些功能的視頻,請參閱下面的鏈接,您可以從網站下載示例應用程序。

http://ossh.com.au/design-and-technology/software-development/sample-library-style-ios-core-data-app-with-icloud-integration/sample-apps-explanations/backup-files/