2012-04-15 9 views
5

Tengo un proceso de configuración corto en mi aplicación y creo un NSManagedObject para almacenar el nombre y otros detalles de un individuo, sin embargo, durante esta configuración no quiero guardar el objeto hasta que el usuario presiona 'Hecho' al final de la configuración (solo en caso de que cancelen la configuración por cualquier razón).Almacenar pero no guardar NSManagedObject en CoreData?

¿Es posible mantener presionado el objeto que contiene mi información durante un tiempo breve hasta el final del proceso de configuración sin guardarlo realmente en CoreData?

Gracias.

Respuesta

2

Cuando se trata de CoreData, todas las acciones de agregar/modificar/eliminar ocurren en NSManagedObjectContext, pero los cambios no se conservan en el disco hasta que se invoca 'guardar' en ese contexto.

Así que la respuesta es sí, este es el comportamiento que ya debería estar recibiendo. Si está agregando o modificando las propiedades de NSManagedObjects, estos cambios se guardan en la memoria del contexto, pero no se guardan en el disco hasta que realmente se llame a 'guardar'.

+1

Bueno, ahí es donde estoy teniendo problemas. Nunca llamo salvo en el contexto, incluso podría ingresar ningún detalle, dejar todos los campos en blanco en la vista de detalles y volver a mi lista de objetos y ver que se ha agregado un objeto a pesar de esto (con valores nulos). –

+0

Dicho esto, creo que descubrí que estaba haciendo lo incorrecto. Además de eso, necesito pasar mi objeto por aproximadamente 5 vistas (lo cual no es lo más favorable que hacer) ¿cómo puedo hacer esto fácilmente? –

+1

Si cada uno de los controladores de vista intermedios interactúa con el objeto, tiene sentido simplemente pasar el objeto a cada controlador de vista consecutiva (supongo que está utilizando una pila de controlador de navegación) por medio de una propiedad. Si las vistas 2-4 no tienen nada que ver con el objeto, entonces podría considerar hacer de su controlador de 5ta vista un delegado suyo (donde obtiene la referencia original del objeto gestionado). – isaac

12

También puede utilizar

NSEntityDescription *ed = [NSEntityDescription entityForName:@"YourManagedObject" inManagedObjectContext:managedObjectContext]; 
YourManagedObject *obj = [[[YourManagedObject alloc] initWithEntity:ed insertIntoManagedObjectContext:nil] autorelease]; 

para crear el objeto gestionado sin insertarla en su contexto. Puede hacerlo más tarde llamando al [managedObjectContext insertObject:obj];.

+0

¡¡¡Ahorraste mi día !!! Apreciado. :) –

Cuestiones relacionadas