¿Por qué podrían estar ocupados cambios de uno a otro sin NSManagedObjectContext una combinación explícita?

StackOverflow https://stackoverflow.com/questions/2472955

Pregunta

Estoy trabajando en una función de importación de objetos que utiliza múltiples hilos / NSManagedObjectContexts, usando http://www.mac-developer-network.com/columns/coredata/may2009/ como mi guía (nota que estoy desarrollando para iPhone).

Por alguna razón, cuando guardo una de mis contextos otro se actualiza inmediatamente con los cambios, aunque he comentado mis llamadas a mergeChangesFromContextDidSaveNotification. ¿Hay alguna razón los contextos podrían fusionan entre sí sin una llamada explícita?

A continuación, un registro de lo que está pasando:

// 1.) Main context is saved with "Peter Gabriel"
// 2.) Test context is created, begins with same contents as main context
// 3.) Main context is inserted with "Spoon"
// 4.) Test context is inserted with "Phoenix"

// Contents at this point:

CoreTest[4341:903] Artists in main context: (
    "Peter Gabriel",
    "Spoon"
)
CoreTest[4341:903] Artists in test context: (
    "Peter Gabriel",
    "Phoenix"
)

// 5.) testContext is saved

// New contents of contexts:

CoreTest[4341:903] Artists in main context: (
    "Peter Gabriel",
    "Phoenix",
    "Spoon"
)
CoreTest[4341:903] Artists in test context: (
    "Peter Gabriel",
    "Phoenix"
)

Como se puede ver, el contexto de prueba se guarda a medio camino a través, y el contexto principal de repente tiene los nuevos objetos a partir del contexto de prueba, a pesar de que no he realizado todo el combo NSManagedObjectContextDidSaveNotification / mergeChangesFromContext.

Mi opinión es que no hay cambios nunca se fusionarán a menos que explícitamente hecho ... ¿alguien sabe lo que está pasando aquí?

¿Fue útil?

Solución

  

Mi opinión es que no hay cambios nunca se fusionarán a menos hecho expresamente ...

Eso no es correcto. Supongo que después de su re-cargada 5) que Artists en el contexto principal, ¿verdad? Cualquier fetch siempre va hacia abajo en el disco, acceso al archivo. Si eso es después de la salvará de un contexto diferente, que iré a buscar nuevas entradas que acaba de crear. Si hay conflictos, los que será procesada de acuerdo a su mergePolicy, ver este documento de Apple .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top