2010-07-17 40 views

回答

5

拯救:

[[NSUserDefaults standardUserDefaults] setValue:_email forKey:@"email"]; 
[[NSUserDefaults standardUserDefaults] setValue:_password forKey:@"password"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

爲:

_email = [[NSUserDefaults standardUserDefaults] stringForKey:@"email"]; 
_password = [[NSUserDefaults standardUserDefaults] stringForKey:@"password"]; 

你的情況:

[[NSUserDefaults standardUserDefaults] setValue:Number.text forKey:@"Number"]; 

和:

NSString * number = [[NSUserDefaults standardUserDefaults] stringForKey:@"Number"];

的「鑰匙」通常是硬編碼的作品就像一個「變量名」中存儲的東西(典型的名稱/值對像字典一樣)。

檢查值是否已設置;在您閱讀後:

if (number) ...
+1

所以命名編號的文本框多數民衆贊成一個IBOutlet我會用這樣的: [NSUserDefaults的standardUserDefaults]的setValue:_number forKey: Number.text]; [[NSUserDefaults standardUserDefaults] setValue:_password forKey:Password.text]; [[NSUserDefaults standardUserDefaults] synchronize]; – user393273 2010-07-17 21:54:25

+0

通常情況下,「密鑰」是硬編碼的...這就像你的「變量名稱」存儲的值...像這樣... [[NSUserDefaults standardUserDefaults] setValue:Number.text forKey:@ 「數」]; 這有道理嗎? – Steve 2010-07-17 21:57:29

+0

這會工作,但它不安全。您應該將敏感信息存儲在鑰匙串中。 – 2010-07-17 21:58:07

13

敏感信息應存儲在設備密鑰安全位置的鑰匙串中。如果您將用戶名和/或密碼保存在NSUserDefaults中,則將它們保存爲明文,這本質上是不安全的。

在互聯網上有很多關於如何在iPhone上使用鑰匙串的例子,包括在您的代碼中使用的簡單包裝。例如,這裏是在Github上一些不錯的代碼,使得它非常容易:

http://github.com/ldandersen/scifihifi-iphone/tree/master/security

+1

比我的回答更好。謝謝(你的)信息。當然,任何開發人員都應該確定自己的應用程序需要多少安全性,並瞭解使用鑰匙串(模擬器支持,設置應用程序支持,增加的複雜性和開發時間)的缺點。 – Steve 2010-07-17 22:09:36