2011-04-08 38 views
0

我一直在設計我的應用程序來存儲它改變/排序,並定期引用存儲爲通過應用程序的委託召開的全局變量,並通過引用的本地用戶數據:Iphone,定期更新數據是NSUserDefaults仍然是最簡單的選擇?

appDelegate = [[UIApplication sharedApplication]delegate] 

這似乎工作,雖然是最可能不是最佳實踐,是否有任何缺點,只是在NSUserDefaults中保存相同的數據,考慮到數據本身是一對自定義對象的小數組,並且在啓動和整個應用程序時刷新,SQL Lite似乎對我的需求有點沉重。

本地存儲是否有一個通用的最佳實踐,還是真的取決於它?

回答

2

我推薦使用核心數據。雖然第一次經歷可能有點混亂,但投資是值得的。

+0

&@DavidM:是的,不要忘記第一次嘗試會看起來很艱難,但一旦你掌握了這一點。然後你可以在你的手指尖上玩。所以肯定值得投資。 'mvds'很好的回答 – 2011-04-08 15:55:44

0

你在做什麼很好。更好的做法可能是擁有一個包含所有相關數據的單例類。然後,在你需要的任何地方,你只需調用[[globalData instance] arrayOfData]並擁有它。這樣,您可以將應用程序委託中的數據抽象到一個集中的地方。

NSUserDefaults用於在應用程序啓動之間存儲信息。使用它來存儲設置或每次啓動應用程序時讀取的內容,或者用於保存應用程序的狀態,以便用戶可以重新啓動並在退出後處於相同位置。除非您存儲的數據相當大,否則沒有任何明顯的性能問題。

0

我需要考慮數據 本身就是一對夫婦 自定義對象的小數組,並刷新上 啓動和整個應用程序。

由於您當前的要求僅限於小數組和自定義對象,因此可以使用NSUserDefaults。

但是,雖然使用NSUserDefault,我們應該照顧這兩個事實。 1.)對於自定義對象,您需要使用編碼協議直接使用NSUserDeraults保存它們。

2.)如果我們沒有正確地同步它,NSUserDefaults有時會顯示奇怪的行爲。你可以使用它的[[NSUserDefaults synchronize]]。

核心數據應在使用多個相關的自定義對象時使用。因爲它的對象關係映射和直接對象管理的概念非常好。{在底層它使用SQLite}。

SQLite另一方面相對容易實現,並且具有與系統交互的C api。在這裏,您需要將自定義對象分解爲屬性並運行查詢。

相關問題