2013-01-23 36 views
3

我已經創建了一個應用程序,它將使用用戶名,密碼登錄並允許用戶從服務器下載文件。在我的應用程序中,一旦用戶在應用程序中登錄,我必須堅持少量數據。使用NSUserDefaults來存儲很多值會導致問題?

持久數據,如用戶名,密碼,用戶下載列表,訂閱計劃等。數據可以通過NSUserDefaults,Plist等在應用程序中保存。但是我覺得使用NSUserDefaults存儲和檢索值很容易。由於我需要在許多視圖控制器中使用這些值,我更喜歡NSUserDefaults

這是最佳做法嗎?使用太多NSUserDefaults會導致陷阱? 告訴我有沒有其他的方式來堅持數據,並輕鬆地檢索可可觸摸?

+0

您可以使用文件以json的形式存儲這些數據。 – Exploring

+0

我不想在文件中存儲信息,因爲它更脆弱 – Cyril

+0

請不要在'NSUserDefaults'中存儲密碼,因爲它將以未加密的方式存儲,您不希望這樣做。 –

回答

2

您可以使用NSUserDefaults來存儲用戶數據。

UsernamePassword

但對於高度敏感的數據,我更喜歡keychain來存儲它們。

請檢查這些鏈接鑰匙串保存:

  1. Simple iphone keychain access
  2. saving email password to keychain in ios
  3. howto use keychain in iphone sdk
+0

謝謝。讓我檢查鑰匙串API – Cyril

+0

但我們可以使用鑰匙串僅用於存儲用戶名和密碼,或者我們可以使用類似鍵值對嗎? – Cyril

+0

@Cyril:我添加了鏈接,可以像keyvalue對一樣保存 –

0

我會考慮使用一個庫如https://github.com/kishikawakatsumi/UICKeyChainStore這僅僅是一個非常好的包裝圍繞ios鑰匙串存儲並將敏感數據存儲在用戶鑰匙串中而不是用戶d中efaults plist,因爲它更安全。

至於數據如果不安全,沒有理由不把它們寫出來寫入文件並加載回來?

+0

對不起,細節將要變得更加安全 – Cyril

+0

你是否簡單地下載了一次然後你想要安全存儲的文件...或者他們會每次應用程序啓動並運行時都要下載? – Shaun

+0

使我下載的數據安全不是一個問題,因爲我下載的文件是加密的。我只想存儲應用程序中安全使用的數據,例如用戶名,密碼等。 – Cyril

2

在我看來,如果你想存儲很少的數據,比如用戶名,密碼或者一些BOOL,你可以使用NSUserDefaults。

由於NSUserDefaults是常用的plist,如果您想存儲一些數據,例如下載鏈接,最好使用自定義plist。

如果你想存儲一些大數據,如UIImage,你可以使用NSCache,但它可能會驅逐數據。

如果要存儲大量數據,最好使用數據庫。