Su primera pregunta sugiere que malinterpretó la intención de NSInMemoryStore
tipo de tiendas persistentes. Son la parte persistente de la pila de Datos centrales. La falla es algo que sucede cuando traes instancias a un contexto de objeto administrado; se crea un error que dispara y se rellena desde el caché NSPersistentStoreCoordinator
o el almacén persistente subyacente cuando se activa. Un almacén en memoria no cambia la relación de fallas. Obviamente, realmente no ayudará a su problema, sin embargo, ya que tendrá que persistir todos los datos en la memoria. Las tiendas en memoria son realmente apropiadas para (1) probar (son rápidas) y (2) raspar las pilas de datos centrales en las que desea utilizar la gestión de gráficos de objetos de Core Data sin tener que mantener nada en el disco.
En respuesta a su segunda pregunta, la respuesta es SÍ. El intervalo de estancamiento se aplica al contexto, no a la tienda persistente.
Entonces, ¿son los datos centrales apropiados para el almacenamiento en caché de datos desde un servidor de base de datos remoto? Realmente no. Aunque Bill Bumgarner (un ingeniero de Apple) ha insinuado que es posible, he encontrado que es mucho más fácil en mi propio código separar el almacenamiento en caché de la gestión de gráficos de objetos de Core Data. Todavía es muy agradable utilizar los datos centrales para gestionar un gráfico de objetos y para enlazarlos con facilidad a una (s) capa (s) de controlador/interfaz de usuario. Entonces mi estrategia es extraer datos del servidor de la base de datos y almacenarlos en mi propia estructura de datos (el libcache y NSCache en OS X 10.6 podrían ser un buen punto de partida). Luego, decida qué quiere en su gráfico de objetos y migre eso a una pila de datos centrales (respaldada por una tienda persistente en memoria). Tendrá que manejar la notificación de cambio o sondeo desde el servidor de la base de datos usted mismo. Cuando los datos de la base de datos cambian (o la consulta del usuario cambia, etc.), solo digo a todos los editores que finalicen la edición, luego borro el contexto y lo reconstruyo desde el caché (posiblemente) actualizado.
Casi suena como lo que realmente quiere hacer es implementar su propia capa de almacenamiento: objetos gestionados que fallan de nuevo a un almacén persistente que es su servidor de base de datos. –
Sí, pero la única forma de hacerlo es NSAtomicStore (en Mac OS X 10.5+) y luego debe cargar todo en AFAIK a la vez. – diederikh