2010-07-17 7 views

Respuesta

5

de ahorrar:

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

para leer:

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

En su caso:

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

Y:

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

la "llave" es por lo general modificable y funciona como un "nombre de la variable" de las cosas en el almacenamiento (pares nombre típico/valor como un diccionario).

Para comprobar si el valor se ha configurado o no; después de leerlo:

if (number) ...
+1

por lo que para el campo de texto llamado Número thats de un IBOutlet, lo usaría esto: [[NSUserDefaults standardUserDefaults] setValue: _number forKey: Number.text]; [[NSUserDefaults standardUserDefaults] setValue: _password forKey: Password.text]; [[NSUserDefaults standardUserDefaults] synchronize]; – user393273

+0

Por lo general, la "llave" es modificable ... esto es sorta como su "nombre de la variable" para el valor que se almacena ... así ... [[NSUserDefaults standardUserDefaults] setValue: Number.text forKey: @ "Número"]; ¿Eso tiene sentido? – Steve

+0

Esto funcionará, pero es inseguro. Debería almacenar información confidencial en el llavero. –

13

La información confidencial se debe almacenar en el llavero, una ubicación segura mediante cifrado en el dispositivo. Si guarda el nombre de usuario y/o la contraseña en NSUserDefaults, los guarda como texto plano, lo cual es intrínsecamente inseguro.

Hay muchos ejemplos en Internet de cómo usar el llavero en el iPhone, incluye envoltorios simples para usar en tu código. Por ejemplo, aquí hay algunos bastante buen código en Github que hace que sea muy fácil:

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

+1

Mejor respuesta que la mía. Gracias por la info. Por supuesto, cualquier desarrollador debe determinar cuánta seguridad se necesita para los propósitos de su propia aplicación, y comprender los inconvenientes de usar el llavero (compatibilidad con el simulador, soporte de la aplicación de configuración, complejidad añadida y tiempo de desarrollo). – Steve

Cuestiones relacionadas