¿Cómo detengo que los campos de texto y las imágenes seleccionadas desaparezcan cuando el dispositivo está apagado?

Mis campos de texto y mis imágenes seleccionadas del selector de imágenes se restablecen en blanco si mi aplicación deja de ejecutarse o si el dispositivo está apagado. ¿Cómo puedo conservar esta información?

He usado un singleton (con la ayuda de un compañero) y puedo conservar mi imagen... es decir, hasta que se cierra la aplicación o se apaga el dispositivo. Entonces se ha ido.

.m

- (void)viewDidLoad
{
    singletonObj = [Singleton sharedSingletonController];
    imageView.image = singletonObj.imagePicked;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setImageView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
 }

 #pragma mark - Action

- (IBAction)done:(id)sender
{
    [self.delegate flipsideViewControllerDidFinish:self];
}

- (IBAction)btn:(id)sender {

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    }

    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info

{
    NSData  *dataImage = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);

    UIImage *img = [[UIImage alloc] initWithData:dataImage];
    singletonObj.imagePicked = img;
    imageView.image = img;
    [picker dismissModalViewControllerAnimated:YES];
}
@end

preguntado el 03 de mayo de 12 a las 20:05

2 Respuestas

Hay dos tipos de memoria: volátil (RAM) y memoria permanente (es decir, discos duros y otro tipo de almacenamiento).

La memoria volátil se borra y se pierde cuando un programa/computadora se apaga.

El uso de un singleton está bien, pero no tiene ninguna relación con el mantenimiento de datos de una sesión a otra (y por Sesión Me refiero al momento en que se ejecuta el programa: desde el inicio hasta la terminación de una aplicación).

Debe almacenar los datos que desea conservar de una sesión a otra para archivar utilizando cualquier método que desee. Dependiendo de la información que desee almacenar, existen diferentes mecanismos dedicados para guardar:

  • (Tales como NSUserDefaults para las preferencias del usuario).
  • Datos principales es un marco que define el mecanismo para estructurar datos y guardarlos/leerlos en un archivo (también conocido como almacenamiento persistente).
  • También puedes usar serialización.
  • O siempre puede manipular manualmente los archivos.
  • NSData tiene writeToFile:atomically: que escribirá crear un archivo a partir de un objeto de datos. Si desea guardar una imagen, debe obtener los datos subyacentes de una UIImage (es decir: UIImagePNGRepresentation(...)).

Respondido 22 Feb 20, 10:02

En su opinión, ¿cuál sería la mejor opción para almacenar una sola imagen tomada del carrete de la cámara? - JSA986

Si todo lo que le importa es almacenar una imagen (es decir, las selecciones posteriores reemplazan la imagen elegida anteriormente), escribiría esa imagen en un archivo en el directorio de documentos de su aplicación. Hay funciones convenientes para obtener datos PNG o JPEG de un UIImage, y si solo tiene una imagen, siempre puede mantenerla en el mismo camino. - rickster

@rickster verdad! Ampliado en él. - usuario1040049

Vas a tener que usar datos básicos. Puede aceptar NSData de una imagen UII, así como NSStrings. La función dentro de appDelegate, AppicationWillTerminate, deberá usarse para que la información se almacene justo antes de que finalice la aplicación.

Esto requerirá una cantidad decente de trabajo para que funcione correctamente, pero nada demasiado difícil. Si necesita ayuda para comprender los datos básicos, le recomiendo este enlace

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

contestado el 04 de mayo de 12 a las 21:05

¿Esa es la única opción? ¿Qué tal si solo quisiera conservar la foto? He leído ese comentario antes y lo encontré más allá de mi conjunto de habilidades en este momento. - JSA986

Todo lo que se retenga en la memoria se eliminará una vez que finalice la aplicación. Por lo tanto, debe guardarse en el disco de alguna forma. Core Data puede ser un poco difícil, pero confía en mí, pensé lo mismo antes de usarlo. Realmente no es tan malo una vez que le coges el truco. - Michael Schroeder

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.