2009-11-12 55 views
2

我正在處理顯示只讀數據的應用程序。 它更像是一本書。預填充只讀應用程序的核心數據

使用SQLite很容易,但我對性能不滿意並試圖使用Core Data。

問題是預填充核心數據是它是一個艱難的過程。

我的問題是: 是否有可能建立一個助理iphone應用程序(供我使用),它使用相同的數據模型進行預填充。 ,然後取出填充的.xcdatamodel文件並在我的原始應用程序中使用它?

我希望這是有道理的:)

艾德

回答

3

我相信你問的是你是否可以創建一個CoreData數據庫的前期,並將其複製到iPhone。那是對的嗎?

This article將有所幫助。這裏有一個報價:

我因此建議以下五個步驟:

  1. 在一個逗號分隔的文件中創建您的數據,通常將數據(實體)的每一行中的文件的行並用逗號分隔不同的列(它的屬性)。
  2. 編寫一個獨立程序並將其複製到主項目的.xcdatamodel文件中。
  3. 在您的新程序中編寫代碼,用於分析您的逗號分隔文件,並將信息插入Core Data持久性存儲中,該存儲應與主項目中的持久性存儲相同。
  4. 在模擬器中運行程序
  5. 將您的數據從模擬器的文檔目錄複製到實際項目的軟件包中。
+0

嗨Benjamin 我已閱讀此頁面。 我的問題是: 我可以使用一個獨立的程序,專門用於填充CoreData數據庫,並且在我輸入數據後,我將填充的數據文件從文檔目錄複製到我的主包中。 要重寫: can我用獨立的應用程序替換CVS文件步驟以輸入數據? – Adhamox 2009-11-12 04:03:43

+0

當然。只需消除步驟1.然後將第3步替換爲允許您自己插入信息的屏幕,而不是解析任何數據文件。核心數據文件是其核心內容,只要您的.xcodedatamodel文件在項目之間相同,您就可以複製該文件並且它將起作用。 – 2009-11-12 10:11:57

+0

謝謝:)這是有幫助的 – Adhamox 2009-11-12 13:25:25

3

這是可能的,我已經做到了。

http://www.mac-developer-network.com/columns/coredata/may2009/

我不得不改變CSV部分的工作方式,而且要修改模型:我這裏使用的代碼做了一個桌面應用程序從一個CSV文件中讀取。

  • 我將模型從模型構建器複製並粘貼到iPhone模型中。 (點擊「網格」區域,全部選中,複製)
  • 然後,我將sqlite數據庫生成的桌面應用程序(在應用程序支持中找到,在此應用程序的文件夾中),並將其放入資源文件夾
  • 我做了一些代碼,在啓動時,在applicationDidLaunch方法中將sqlite複製到iPhone上的文檔文件夾(如果它不在那裏)。有可能它在資源文件夾中是不好的。即使您將數據庫用作只讀數據庫,Core Data也可能想要寫入數據。不知道這個雖然..
  • 我用我的核心數據設置文檔文件夾中的sqlite文件。

桌面和iPhone核心數據sqlite文件似乎是完全相同的格式。只要它們具有相同的數據模型,您就可以將一個sqlite文件傳輸到另一個應用程序(iPhone到iPhone)。在另一個應用程序中,我使用NSXMLParser創建了Core Data sqlite文件,然後使用Simulator將它傳輸到另一個應用程序,都在iPhone上。

+0

也謝謝你nevan ..這個解決方案對我來說有點複雜,因爲我是一個新手,但你明確地表達了這個概念。 – Adhamox 2009-11-12 13:26:01

0

是的,你的數據源可以是你想要的任何東西。其他建議是很好的。創建一個與您想在您的應用中使用的管理對象模型(.xcdatamodel)相同的管理對象模型。讀入文件中的數據,創建一個新的託管對象實例並從文件中填充它。然後保存,並潛入iPhone模擬器中的軟件包並複製它。這還有額外的好處,就是所需的格式,以及所有有用的元數據。複製你的對象模型和你的託管對象類,你很好。

請注意,如果您確實希望它是隻讀的,並且您在安裝時使用它,它將安裝在已完成的應用程序包中(位於應用程序/ {SIGNATURE} /Myapp.app下) 。如果您打算編輯此數據庫或允許用戶保存該數據庫,最好將其複製到您的用戶數據庫所在的Applications/{SIGNATURE}/Documents目錄中。

相關問題