2011-08-19 22 views
1

我目前正在尋找在我的iPhone應用程序中保存數據的最佳方法;數據將在應用程序的打開和關閉之間持續存在。我已經研究過使用NSKeyedArchiver進行歸檔,並且我已經成功地使其工作。但是,我注意到如果我嘗試保存多個對象,每次保存時它們都會被覆蓋。 (基本上,用戶將能夠創建他/她想要的東西的列表,保存列表,創建更多列表,將其全部保存,然後能夠返回並選擇任何列表以在未來加載日期。)Objective-C保存數據的最佳選擇

我聽說過的SQLite,核心數據,或使用.plists來存儲數據的多個陣列,將持續一段時間。有人能指導我保存數據的最佳方向嗎?謝謝!

回答

2

核心數據非常強大,易於使用,一旦你瞭解了最初的學習曲線。這裏有一個很好的教程,讓你開始 - clicky

+1

我已經創建了一個未設置爲使用核心數據的項目。難以在預先存在的項目中進行設置,還是應該從頭開始,選擇「使用核心數據」並複製文件? – Plaidfox

0

要在開始使用CoreData退房this tutorial by Ray Wenderlich。它的簡短並超越了CoreData的基礎知識。

基本上你只想看plist,如果你有少量的數據要存儲。一個簡單的設置或首選項列表。任何比這個更大的東西,它會在性能上有所突破。 iTunesU上有一個很棒的視頻,LinkedIn的開發人員描述了他們在plists和CoreData之間的性能指標。

存檔工作,但將是大量的工作來存儲和檢索數據,以及把性能挑戰你的背部。所以我不會去那裏。我會使用CoreData。它的入門非常簡單,如果你瞭解this stack overflow question中的對象,那麼你就知道你需要做的一切。

1

我會去NSKeyedArchiver。聽起來像問題是你沒有正確地組織圖表。

你在技術上有一個列表的列表,但你只保存內嵌套列表。

你應該加入列表到「超級」列表中,然後存檔超級列表。

CoreData/SQL與您所描述的有點相似。

+0

因此,你會建議拉我在檔案中的數組,將新數據追加到最後,然後重新歸檔它? – Plaidfox

+0

這是做到這一點的一種方式。或者你可以隨時加載超級列表並根據需要進行修改。然後當你保存時,保存整個列表。 – David

+0

現在我正在尋找保存每個都有大約16個字符串的可變數組。如果此歸檔數據變得太大,我是否會擔心內存過載? – Plaidfox

1

你也可以試試這個framework。它非常簡單易用。 它基於ActiveRecord模式並允許使用遷移,關係,驗證等。

它僅使用sqlite3,沒有CoreData,但不需要使用原始sql或手動創建表。

只需描述你的iActiveRecord和享受。