2011-11-16 228 views
1

我正在編寫一個應用程序,其中包含校園和桌面視圖中的所有建築物。當您點擊建築物時,它將檢索其中的信息,例如經度,緯度,建築物名稱及其圖像。iPhone應用程序的數據存儲

我的問題是你認爲最好的方式來存儲這些數據?我應該使用sqlite3數據庫還是核心數據? Sqlite3是我現在所傾向的東西,我對SQL有些熟悉。任何建議,將不勝感激。

回答

5

CoreData使用SQlite。如果你正在學習,那將是你最好的選擇,因爲所有蘋果相關的東西(iphone,ipad,ipod touch和MacOS X都支持它)。

有很多關於如何使用CoreData的書籍和例子。另外,CoreData可以以更好的方式處理更新。

要使用CoreData,您不需要編寫任何SQL行。它的全部由API完成。

+4

我會更強烈地說;除非您非常需要可移植到非Apple平臺*或*您真的*真的*想要學習SQL,與Core Data相比,SQLite是浪費時間。 – bbum

+0

好的謝謝,我會更多地考慮它。我傾向於sqlite3,因爲我可以編寫一個perl腳本,將每個建築物的所有信息放在一張表中。我不確定這對於CoreData來說是否容易。我已經搞混了CoreData,它使用起來非常簡單和友好。 – ericlvb

+0

您可以爲CoreData編寫導入例程,但通常應該在您的應用程序中執行。不建議直接訪問底層CoreData的SQlite數據庫。 – tobyc

-2

好的,所以我想出了一個很好的方法來使用核心數據來做到這一點。我用一個實體及其屬性創建了核心數據模型。實體及其屬性對應於一個表及其列。我運行它,它創建了一個空的sqlite文件。你可以找到這個文件:

/Users/[用戶名] /資源庫/應用程序支持/ iPhone模擬器/ 5.0 /應用/ [一些長期的十六進制數] /文件

從那裏,你可以打開並查看sqlite文件及其內容:

> sqlite3 [name of file].sqlite 
> .schema 

.schema顯示錶格和列。您會注意到,當Core Data創建一個sqlite數據庫時,它將調用表Z [entity]和列Z [attribute],其中entity是您實體的名稱,attribute是您的屬性的名稱。所以表格和所有屬性在它之前有一個Z.

然後,我寫了一個腳本來收集所有的信息,並將其存儲在這個數據庫中,然後我把它放回到我發現它的目錄中,它工作正常!希望這能幫助遇到同樣問題的人。

我絕對建議使用核心數據而不是SQLite,核心數據更容易使用。

UPDATE:我應該提到,我用它來初始化一個數據庫,並且在初始化後不做任何改變。

+0

請不要這樣做。訪問底層的Core Data數據庫是一個可怕的想法。 Apple可以隨時更改實際實施,並且您的應用將失敗。只需使用實際的核心數據方法來創建您的數據。 – sosborn

+0

這對於調試很好,也許可以初始化一些標準數據,但是你不應該依賴它。 –

+0

就我而言,我需要初始化一個包含230個建築物數據的表格,每個建築物具有不同的屬性。之後數據庫中沒有任何變化,所以我看不出有什麼問題。 Apple如何期望您自動化存儲海量數據的過程,而無需直接訪問底層數據庫並使用Core Data? – ericlvb

相關問題