2011-03-13 76 views
2

我正在學習Core Data for iPhone應用程序。我定義了.xcdatamodel。但我有以下問題:任何免費的SQL OS管理器的MAC OS X?

  1. 是否可以從.xcdatamodel文件製作.sqlite文件 ?
  2. 如果不是,準備.sqlite的正確 過程是什麼?
  3. 如果有必要使用外部的 工具,有沒有免費的工具可以製作 .sqlite?

謝謝。

+0

xcodes核心數據編輯器有什麼問題?它是我見過的用於處理數據庫的最好用戶界面之一。 – 2011-03-13 17:14:12

+0

適用於Mac OS X的廉價(但不是免費的)SQLite編輯器是Base:http://menial.co.uk/software/base/ – 2011-03-13 18:35:43

+0

如果您有三個問題,最好在堆棧溢出時發佈三個單獨的問題。這樣,如果您的問題已經被問到,則更容易引用早期的主題。 – 2011-03-14 09:15:05

回答

3

是否可以從.xcdatamodel文件製作.sqlite文件 ?

那麼,當你創建一個核心數據堆棧和設置您的商店的SQLite的商店,持久性存儲協調員將創建一個.sqlite文件配置爲連接到存儲模型。

如果沒有,準備.sqlite的正確程序 是什麼?

在iOS 3.0之前,你不能使用核心數據,所以有幾個使用SQLite的庫。不過,我認爲他們中的任何一個都沒有更新,因爲使用Core Data沒有多大意義。

如果需要使用外部 工具,有沒有免費的工具,使 .sqlite?

的SQLite來standard as part of MacOS X所以你可以使用命令行或腳本語言如Ruby,Python和Perl的(也是標準)來創建你想要的任何SQLite數據庫。

但老實說,我不打擾。除非您的應用程序的數據非常簡單並且大部分是靜態的,否則您將最終重新發明輪子並有效地複製大部分Core Data,以便將SQLite與應用程序的其他部分進行接口。

1

核心數據的SQLite結構實際上並沒有設計成可以被Core Data以外的任何東西處理。即使你的持久存儲使用的是SQLite數據格式,如果你在一個通用的SQLite工具中打開它,你將會得到一個毫無疑問的混搭。

我猜你的目標是在你的數據庫中預先填充數據?要做到這一點的正確方法是編寫一些「導入程序」代碼,讀取您擁有的任何現有數據,並在與這些數據對應的持久性存儲中創建對象。保留該持久性存儲的副本(可能在您的應用程序包中),將其複製到臨時目錄中進行寫入,然後爲自己創建一個起始數據集。

+5

儘管您不應編輯內部Core Data數據庫結構,但爲了進行調試,對數據進行內部對等可能非常有用。一旦你創建了一個數據庫並填充了一些實體,就不難明確代表什麼在那裏。通過查看原始SQLite數據庫,我發現了錯誤的引用(甚至是核心數據本身中的一個錯誤)。 – 2011-03-13 18:35:16