2010-07-17 7 views

risposta

5

salvare:

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

a leggere:

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

Nel tuo caso:

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

E:

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

la "chiave" di solito è hard-coded e funziona come un "nome di variabile" per le cose in deposito (coppie tipico nome/valore come un dizionario).

Per verificare se il valore è stato impostato o meno; dopo si legge:

if (number) ...
+1

così per il campo di testo chiamato Numero thats di un IBOutlet userei questo: [[NSUserDefaults standardUserDefaults] setValue: _numero Forkey: Number.text]; [[NSUserDefaults standardUserDefaults] setValue: _password forKey: Password.text]; [[NSUserDefaults standardUserDefaults] synchronize]; – user393273

+0

Di solito la "Chiave" è codificata ... è come il tuo "nome variabile" per il valore memorizzato ... così ... [[NSUserDefaults standardUserDefaults] setValue: Number.text forKey: @ "Numero"]; Ha senso? – Steve

+0

Funzionerà, ma non è sicuro. Dovresti memorizzare le informazioni sensibili nel portachiavi. –

13

Le informazioni sensibili devono essere conservati nel portachiavi, una posizione crittograficamente sicuro sul dispositivo. Se salvi il nome utente e/o la password in NSUserDefaults, li stai salvando come testo in chiaro, che è intrinsecamente insicuro.

Ci sono molti esempi su Internet di come utilizzare il portachiavi su iPhone, includere semplici wrapper da utilizzare nel codice. Ad esempio, ecco qualche codice abbastanza buono su Github che rende molto facile:

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

+1

Risposta migliore della mia. Grazie per le informazioni. Naturalmente, qualsiasi sviluppatore dovrebbe determinare quanta sicurezza è necessaria per gli scopi della propria applicazione e comprendere gli svantaggi dell'uso del portachiavi (supporto simulatore, supporto app impostazioni, complessità aggiunta e tempo di sviluppo). – Steve