2012-07-15 73 views
1

嗨支持專家... 我正在寫我的第一個iPad應用程序,並有一個工作測試版副本,解析XML文件,創建應用程序啓動時的UIManagedDocument核心數據數據庫。然而,這需要很長時間,我希望一次脫機並將初始數據直接包含到我的應用程序包中。不用說,我正在試圖讓它工作。預加載核心數據庫UIManagedDocument黑色

我第一次跟着命令行實用程序方法見here這個工作,直到我進口.sqlite文件,並試圖編輯persistentStoreCoordinator方法 - 我使用的是UIManagedDocument所以沒有persistenStoreCoordinator方法在我AppDelegate - this page報價「在某些情況下,您不必編寫任何代碼來加載模型。如果您在Mac OS X上使用基於文檔的應用程序,則NSPersistentDocument將管理爲您找到並加載應用程序模型的任務。」

然後我試圖將UIManagedDocument從我的應用程序的工作版本的模擬器複製爲每this StackOverFlow question 這似乎只是persistentStore是空的,所以我的表也是工作。這正是問題here,但對這個問題的回答讓我回到修改NSPersistentStoreCoordinator方法,我沒有。

我加了一個測試NSFetchRequest到我的代碼,我從我的應用程序包複製到UIManagedDocument文檔目錄 - 所以我知道我在我的應用程序捆綁UIManagedDocument是空的。我已經嘗試從發現者拖放和使用終端的應付 - persistentStore文件似乎被正確移動,並具有大小106 KB,但我仍然在我的應用程序中得到一個空的數據庫。

有關如何使其發揮作用的任何建議?

我是否需要按照UIManagedDocument類參考使用configurePersistenStoreCoordinatorForURL:ofType:modleConfiguration:StoreOptions:error: - 如果是的話我該怎麼做?

我是否需要將一些核心數據方法添加到我的AppDelegate中,以便我可以修改我的persistenStoreCoordinator方法 - 如果有,該方法還需要做什麼?

我是不是更好的利用我的命令行utlity創建的.sqlite DB或persistentStoreUIManagedDocument似乎使用?

+0

我想我解決了這個問題,並在這裏寫下了它:http://stackoverflow.com/questions/8683892/pre-load-core-data-database-in-ios-5-with-uimanageddocument/11713120# 11713120 – wrightak 2012-07-29 21:35:19

回答

0

您可以通過訪問parentContext持久存儲協調:

document.managedObjectContext.parentContext.persistentStoreCoordinator 

或者,如果你僅僅意味着你沒有訪問到構建持久存儲的核心數據堆棧是建立在方法,那麼它看起來這是一種旨在用於該目的,(你提到)掛鉤:

覆蓋configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:自定義持久性存儲的加載或創建。

但是,在文檔中對該方法的討論並不能解釋要做什麼很好。也許你可以覆蓋它並查看堆棧中尚未創建什麼對象,可能有初始化的協調器連接到父上下文以供您配置。在NSPersistentDocument上同樣命名的方法的文檔是這樣的,所以也許UIManagedDocument也是。

+0

感謝您的回覆。按照您的想法,我查看了使用我的UIManagedDocument自動創建的NSPersistentStoreCoordinator。我仍在深入研究究竟發生了什麼,但是我發現以下iCloud問題的答案似乎非常相關:http://stackoverflow.com/questions/10140400/core-data-and-icloud-adding-pre-populated -sqlite-file – 2012-07-15 19:05:36

+0

是的,遷移方法好像對你有用。我意識到,使用iCloud時無法直接複製數據庫。我不記得究竟是哪一個,但我認爲這是描述它的WWDC視頻之一(可能是2011年)。如果您正在考慮iCloud,那麼今年WWDC(2012)的核心數據和iCloud視頻有很多關於設置商店和協調員的信息,儘管不是UIManagedDocument,但是他們可能會有一些啓發信息。他們肯定會談論有不同的商店,有些只是用於靜態數據... – 2012-07-15 19:49:15

+0

...它們用來節省帶寬,但其中一些可能是有用的,特別是如果你不能從UIManagedDocument中得到你想要的並且結束不得不恢復到自己設置堆棧。 – 2012-07-15 19:50:27