Estoy trabajando en una aplicación respaldada por Core Data. En este momento, guardo el Contexto de objeto como y cuando agrego o elimino una entidad desde y hacia el Contexto. Me temo que afectará el rendimiento, así que estaba pensando en retrasar el ahorro. De hecho, podría retrasarlo hasta que la aplicación termine. ¿Es demasiado arriesgado guardar los datos solo cuando la aplicación está a punto de cerrarse? ¿Con qué frecuencia debo llamar al guardado en el contexto del objeto?¿Con qué frecuencia debo guardar en Core Data?
Estaba pensando en tener un hilo separado para manejar el guardado: esperará en un semáforo. Cada vez que cualquier parte de la aplicación llama a un método auxiliar/util para guardar los datos centrales, disminuirá el semáforo. Cuando se reduce a cero, el "hilo de guardado" hará un salvado una vez e incrementará el semáforo a, por ejemplo, 5, y luego dormirá nuevamente.
¿Alguna buena recomendación? Gracias!
Gracias por la respuesta rápida. Mis objetos no son enormes, pero el objeto es un poco complicado. La tienda subyacente es SQLite, así que como dijiste, debería estar bastante bien. Hay un problema adicional que encontré recientemente: creo un objeto de entidad en el contexto y lo guardo. En un breve momento, si borro esa entidad (recuperada más tarde usando un FetchedResultsController), obtendría un error que tiene algo que ver con la consistencia interna. Creo que es porque el contexto no ha actualizado el gráfico de objetos en la memoria. – Justin
Me gustaría añadir a esto que desea hacer que su frecuencia de guardado real sea una variable o un '# define', de modo que una vez que esté en pruebas puede ajustar su frecuencia de guardado y ver los resultados en Instruments. –