El tamaño de lote no funciona cuando se usan contextos padre / hijo

He podido confirmar esto en mi aplicación, y una aplicación de muestra rápida que creé para confirmarlo. Aquí está la configuración:

Tienes dos contextos de objetos gestionados:

masterMOC: NSPrivateQueueConcurrencyType, tied to persistent store coordinator
mainMOC: NSMainQueueConcurrencyType, child of masterMOC, NOT tied to any store coordinator

Esta configuración se inspiró en el video de la WWDC, que sugiere que podemos guardar en un hilo de fondo configurandomasterMOC a una cola privada y vincularlo a la tienda persistente. Si configura unNSFetchedResultsController utilizando lamainMOC (y debe ser elmainMOC ya que es el que está vinculado a la interfaz de usuario), y establecer unfetchBatchSize, el tamaño del lote se ignora y todas las entidades tienen fallas al mismo tiempo. Permití las anotaciones de depuración de SQLite, y cuando me desplazo a través de miles de filas (con un tamaño de lote de 20), no se disparan fallas.

Si hago un ajuste simple, es decir, atar el coordinador de tienda persistente almainMOC y conviértalo en un contexto raíz (es decir, ya no es un hijo del maestro), entonces el tamaño del lote funciona perfectamente, y cuando me desplazo a través de miles de filas, se disparan varias fallas.

¿Es este el comportamiento esperado? ¿Me estoy perdiendo de algo?

Puedes descargar el proyecto de muestra.aquí

Respuestas a la pregunta(2)

Su respuesta a la pregunta