我已經讀過,這工作,但我無法得到它。我想預先填充核心數據。我運行我的項目,所以它會創建sqlite文件。我將它複製到桌面上,然後使用命令行sqlite3預填充它。我運行了查詢以確保它正確填充。所以現在我重新將它添加到我的項目中。不管我做什麼,它都不會獲取數據。預填充核心數據通過從文檔複製.sqlite文件
我得到它的工作一次。在模擬器中運行後,我從項目的文檔文件夾中重新複製sqlite文件。然後我填充這個新的sqlite文件。我把它放回到我的項目中,並且顯示了內容。
我認爲問題是Z_METADATA表。該表具有Z_UUID屬性。我認爲唯一的工作時間是模擬器的UUID和sqlite的Z_UUID屬性相同。
我進入〜/ Library/Developer/Xcode/DerivedData並刪除了DerivedData文件夾的內容。所以現在我的模擬器在運行時會有不同的UUID。我這樣做了,現在sqlite文件的內容將不會顯示。這就是我認爲Z_METADATA表是問題的原因。 Z_METADATA的UUID和我的模擬器的UUID不一樣,因此某些原因它不能使用它?
所有關於預填充核心數據的文章,我發現這些都是舊的,大概在2009年左右,所以我不認爲這是一個問題。那麼我可以使用這種複製sqlite文件的方法,使用命令行預先填充它,然後重新將它添加到項目中?有沒有人有最新的方式預先核心數據?
所以錯誤是我的NSFetchedResultsController
返回了0個對象的計數。我得到它返回我上面提到的一次所有的數據。
你確定你有相同的DataModels嗎?發生了什麼錯誤? – 2012-07-20 19:49:42
是的。我創建了數據模型,運行了應用程序,然後複製了sqlite文件,所以它是相同的模型。錯誤只是我的NSFetchedResultsController返回0個對象。就像我說的那樣,我得到它一次返回數據庫中的所有對象。 – Ryan 2012-07-20 23:22:14
查看[WWDC 2012視頻](https://developer.apple.com/videos/wwdc/2012/),特別是會話227和相關示例代碼(也在視頻網站上)。這是關於在iCloud上使用Core Data,但即使你沒有在做iCloud,也值得看看他們的方法來預先填充數據庫。除了複製文件外,您還可以擁有由兩個獨立存儲支持的持久存儲協調器:Documents /目錄中的讀/寫存儲協調器,以及應用程序包中的只讀存儲協調器。 – rickster 2012-07-20 23:41:17