我剛剛開始使用RubyMotion,從我可以告訴,它建議使用NSUserDefaults數據存儲。這對我來說似乎有點奇怪,因爲名字暗示它應該只用於存儲配置變量等而不是對象。有什麼我不應該保存在NSUserDefaults
是否可以將我的對象(如用戶,公司,任務等)存儲在NSUserDefaults中,還是應該使用其他方法?
我剛剛開始使用RubyMotion,從我可以告訴,它建議使用NSUserDefaults數據存儲。這對我來說似乎有點奇怪,因爲名字暗示它應該只用於存儲配置變量等而不是對象。有什麼我不應該保存在NSUserDefaults
是否可以將我的對象(如用戶,公司,任務等)存儲在NSUserDefaults中,還是應該使用其他方法?
用戶默認設置通常用於存儲少量不需要加密的數據確定。數據量過大或可能隨時間增長,應該進入文件系統或核心數據。任何需要保密的內容(例如密碼)必須進入keychain。
這裏是an answer with suggestions on how to choose among the storage models for your app。
問題的指導方針已無關RubyMotion和一切與可可觸摸。
一般而言,用戶默認設置僅僅是用戶的首選設置,僅此而已。不要在那裏存儲需要保護的數據。不要存儲偏好設置以外的數據。保持小型。
這不是一個合適的地方來存儲其他東西,如你的對象。
NSUserDefaults
應該用於保存應用程序的用戶首選項。它是而不是一般數據存儲。 The NSUserDefaults class reference指出:
默認系統允許應用程序自定義其行爲以匹配用戶的偏好。例如,您可以允許用戶確定應用程序顯示的測量單位或文檔自動保存的頻率。
因此,如果您的應用程序管理用戶,公司和任務則不會使用NSUserDefaults
。
的NSUserDefaults的類提供用於訪問常見類型的方便的方法,如floats
,doubles
,integers
,Booleans
,和URLs
。
默認對象必須是一個屬性列表,即,(或對集合的實例的組合)的實例:NSData
,NSString
,NSNumber
,NSDate
,NSArray
,或者NSDictionary
。
如果要存儲任何其他類型的對象,通常應將其存檔以創建NSData
的實例。
有關詳細信息,請參閱NSUserDefaults Class Reference