Debido a que es no se elimina :)
Si [folder documentObject]
devuelve nil eso significa que no hay relación entre los dos objetos. No significa que el objeto se elimine de los datos centrales.
Prueba esto:
[[doc managedObjectContext] deleteObject:doc];
EDITAR
Utilizando este código he probado su problema:
he hecho un nuevo proyecto con un objeto de documento y la carpeta en la base de datos - Se establece en la carpeta < < -> documento con cascasde establecido en la relación de la carpeta.
// Create a document and folder and save them
Folder *fol = [NSEntityDescription insertNewObjectForEntityForName:@"Folder" inManagedObjectContext:[self managedObjectContext]];
Document *doc = [NSEntityDescription insertNewObjectForEntityForName:@"Document" inManagedObjectContext:[self managedObjectContext]];
[doc setFolder:fol];
[[self managedObjectContext] save:nil];
// Get the document's object id for later
NSManagedObjectID *documentId = [doc objectID];
// Delete the relationship
[fol removeDocumentsObject:doc];
[[self managedObjectContext] save:nil];
// Try to reload the document to see if it's still there
Document *doc2 = (Document *)[[self managedObjectContext] objectWithID:documentId];
// Get a property from the document - this will fault if the document has been deleted. Otherwise it
// will work.
NSLog(@"%@", doc2);
NSLog(@"%@", [doc2 title]);
// Now delete specifically and try again
[[self managedObjectContext] deleteObject:doc];
[[self managedObjectContext] save:nil];
// Should get a fault here
doc2 = (Document *)[[self managedObjectContext] objectWithID:documentId];
NSLog(@"%@", doc2);
NSLog(@"%@", [doc2 title]);
Las primeras dos declaraciones NSLog funcionan correctamente: obtengo una descripción del documento y una cadena para el título.
Las segundas sentencias de NSLog se bloquean porque el documento ya no existe en la tienda.
Esto me dice que simplemente eliminar una relación no es suficiente para eliminar el documento de la tienda; debe eliminarlo explícitamente. Sin embargo, dices que crees que se ha eliminado. ¿Puedes publicar la consulta que estás ejecutando para ver si todavía está en la tienda o no?
bien pensado, pero en mi caso la relación definida es: carpeta <----->> documento. Y es Cascade por lo que "sin relación" significa eliminar el objeto ... – Rizon
Hmmm, eso es extraño. ¿Puede probarse a sí mismo que el documento se ha eliminado, es decir, realizar una solicitud de recuperación justo después de guardar el contexto solo para comprobar que no está allí, que no se está eliminando o tiene algo que ver con el método prepareForDeletion? (o un error en los datos básicos!) – deanWombourne
tratando de buscar fetch - y el objeto está realmente borrado. Mi método prepareForDeletion se define en la clase de objeto Document como - (void) prepareForDeletion {...} – Rizon