Lo que Mike Weller escribió es correcto. Expandiré la respuesta un poco.
primer lugar usted necesita para crear un NSFetchRequest
como la siguiente:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Selection" inManagedObjectContext:context]];
Entonces usted tiene que fijar el predicado para esa solicitud como la siguiente:
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"content == %@ AND page_id == %@ AND book_id == %@", contentVal, pageVal, bookVal]];
donde
NSString* contentVal = @"test";
NSNumber* pageVal = [NSNumber numberWithInt:5];
NSString* bookVal = @"1331313";
Estoy usando %@
ya que supongo que estás usando o proyectos y no valores escalares.
Ahora se realiza una pelota en el contexto de la solicitud anterior:
NSError* error = nil;
NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
results
contiene todos los objetos gestionados que responden a ese predicado.
Finalmente, puede tomar los objetos y llamar a una eliminación en ellos.
[context deleteObject:currentObj];
Una vez hecho esto, debe guardar el contexto de acuerdo con la documentación.
Al igual que un objeto nuevo no se guarda en la tienda hasta que se guarda el contexto, un objeto eliminado no se elimina de la tienda hasta que se guarde el contexto.
Por lo tanto
NSError* error = nil;
[context save:&error];
Tenga en cuenta que save
método devuelve un valor booleano. Entonces puede usar un enfoque como el siguiente o mostrar una alerta al usuario. Fuente NSManagedObjectContext save error.
NSError *error = nil;
if ([context save:&error] == NO) {
NSAssert(NO, @"Save should not fail\n%@", [error localizedDescription]);
abort();
}
Gracias por su respuesta – samir
@flexaddicted Esto debe ser editado para incluir la llamada '[context save: & error]' que debe tener lugar, o el objeto eliminado no se elimina de la tienda . Además, si está utilizando una tienda persistente, tiene que guardarse de esta manera: '[context saveToPersistentStore: & error]'. –
@EvanR Modifiqué mi respuesta teniendo en cuenta su comentario. –