2011-07-31 18 views
5

La pregunta es bastante simple: ¿cuándo debo usar el método save:(NSError **)error de NSManagedObjectContext? Por lo que entiendo, lo único que hace es guardar los datos modificados en la tienda persistente. El delegado de la aplicación generada por la plantilla de Xcode llama al método save: applicationWillTerminate, ¿es eso suficiente?Cuándo utilizar el método save: NSManagedObjectContext

Los detalles sobre mi código:

  • -multiproceso (haciendo operaciones en segundo plano, por lo tanto con múltiples NSManagedObjectContext 's)
  • estoy usando un único NSPersistentStoreCoordinator
  • de datos ha cambiado en las discusiones de fondo se fusiona usando mergeChangesFromContextDidSaveNotification:
  • Si necesita saber más, ¡por favor pregunte!

No pude encontrar una guía sobre cuándo llamarlo, así que decidí preguntarles a todos. ¡Gracias de antemano por sus respuestas!

Respuesta

6

Siempre necesita llamar guardar: cuando quiere guardar sus datos. No siempre se puede garantizar que se invocará applicationWillTerminate. Por ejemplo, si su aplicación falla debido a problemas de memoria (o debido a una de varias otras cosas), entonces no se ejecutará.

Guardaría datos cuando el usuario complete la acción que realmente está generando los datos para guardar.

+0

Y para tareas en segundo plano como recuperar información nueva de la web y agregarla al modelo, ¿la guardarías cuando termines de agregar? ¡Gracias por tu respuesta! – Koen

+0

Sí - Guardaría cuando estuviera hecho. Recuerde, ManagedObjectContext es específico de la secuencia, por lo tanto, no cree nunca una cadena de fondo para guardarla por usted. – dtuckernet

+0

Llamo 'save:' en el mismo hilo que creo el NSManagedObjectContext, que la mayor parte del tiempo pasa a estar en hilos de fondo. Eso no debería ser un problema, siempre y cuando iniciar y guardar ocurre en el mismo hilo, derecha :-) – Koen

Cuestiones relacionadas