2012-04-10 37 views
3

我正在非常廣泛地使用NSUserDefaults。我在NSUserDefaults內保存了許多關於用戶的信息數組,並在以後的另一個視圖中使用它們。使用NSUserDefaults太多

我的問題是,這是一個錯誤的方法?或者這可能是發送到AppStore的問題?

謝謝。

+0

如果您喜歡雲,您爲何不嘗試將數據加載到iCloud?這也會備份您的數據,因此您不必爲數據丟失而煩惱。 – Paul 2012-04-10 16:14:54

回答

3

是的,這是一種錯誤的做法,但我不相信,可以給你一個問題,當你把它發送到AppStore的。

什麼你可能需要做的就是增加一些配置文件和您管理的是,也許在你的項目中使用的核心數據,給你一個更精確的答案只知道你的項目。

此致敬禮。

編輯添加的更好的解釋使用時NSUserDefaults的

你只想使用NSUserDefaults的存儲配置,這將是默認的用戶,如用戶喜愛的顏色作爲背景例如。

你不想在向NSUserDefaults的存儲,密碼,臨時信息,如果你正在做一個遊戲,你將不會存儲在那裏,你的排名,以及諸如此類的東西。

apple doc

的NSUserDefaults的類提供 編程接口與所述默認的系統進行交互。默認系統允許 應用程序定製其行爲以匹配用戶的偏好。例如,您可以允許用戶確定應用程序顯示的測量單位爲 ,或自動保存文檔 的頻率。應用程序通過將 值分配給用戶默認數據庫中的一組參數來記錄此偏好。該 參數被稱爲違約,因爲他們常用來 確定在啓動應用程序的默認狀態或方式,它默認的行爲 。

4

關於NSUserDefaults中可以存儲多少或多少信息(除非您永遠不應存儲安全數據)沒有硬性規定。除非您濫用NSUserDefaults以導致崩潰,否則您肯定不會被App Store拒絕。

我對你對使用另一種觀點陳述困惑,雖然。 NSUserDefaults用於在會話中保存少量數據,而不是在應用程序中的對象之間傳輸數據。如果您使用後者,您應該重新訪問您的應用程序體系結構。

1

,因此不理想保存在userdefaults太多的數據。您可以使用plist或核心數據來存儲您的數據(this is a good Core Data Tutorial)。而且NSUSerDefaults很難更改&刪除對象,所以儘量只用它來存儲用戶名&密碼等。

+0

+1教程鏈接 – 2012-04-10 15:49:35

+0

不,密碼是永遠不應該存儲在NSUserDefaults中的一件事。鑰匙鏈的存在是有原因的! – 2012-04-10 15:59:08

1

你不會從應用程序商店得到拒絕,但它的不是很好的做法做到這一點。考慮使用「核心數據」來存儲結果和值。還有一些NSNotificationsNSUserDefaults用於在viewControllers之間進行通信。

如果使用NSUserDefaults主要用於之間的不同VC的溝通,我會用Delegates(消息傳遞(或)回調)

0

這裏是一個有用的thread建議。實質上,轉到您的項目文件夾,並查看pList文件大小。

我發現的有用的反應是去您的項目文件,並期待在plist文件大小:

5個對象是幾乎沒有。你會沒事的!


在我的機器,我在我的用戶的默認值大約28兆的數據。這根本不會造成任何問題。


從一般的編程經驗,陣列我猜性能開始當你進入1000年代,這取決於元件尺寸迅速衰減。因此,在一個程序中,我不會有一個存儲幾百個元素的問題。這說我可能會開始使用sqlite3數據庫或coredata,如果我是你的話,我會盡早而不是晚些。