Pregunta Eliminar el objeto insertado pero no guardado del Contexto de objeto gestionado de datos del núcleo


¿Hay alguna forma de eliminar un solo objeto gestionado que ya se haya insertado en un contexto pero aún no se haya guardado? Quiero eliminar un solo objeto, no revertir todo el contexto. He intentado llamar deleteObject: pero lanza una excepción ya que, según los datos básicos, el objeto aún no existe en el MOC. Al mirar la propiedad de objetos insertados de los datos centrales, definitivamente sé que se ha insertado y al mirar los objetos eliminados sé que se ha marcado para su eliminación. Esencialmente quiero "desintoxicar" el objeto. Guardar primero y luego eliminar no es aceptable. Gracias.


5
2017-07-02 18:15


origen


Respuestas:


Resulta que es totalmente legal llamar deleteObject: en un objeto que aún no se ha conservado. De acuerdo con la documentación de Apple:

Si el objeto aún no se ha guardado en un almacén persistente, simplemente se elimina del receptor.

Mi problema fue en realidad como resultado del hecho de que hubo un ciclo de retención debido a las relaciones del objeto administrado. Esto se resolvió estableciendo las relaciones problemáticas para nil.

Nota: hasta que guarde el MOC, el objeto administrado que acaba de insertar y luego eliminar, aparecerá en ambos MOC.insertedObjects y MOC.deletedObjects


7
2017-07-02 23:05