Хотелось бы, чтобы существовала такая вещь, как правило условного каскадного удаления, но исходя из предположения, что его нет, я использовал обычное правило обнуления, а затем реализовал некоторую специальную обработку для удаления, такую как:
- (IBAction) deleteBook:(id)sender { // or whatever method handles the deletion
NSManagedObjectContext *context = // get a ref to the context
Book *bookToDelete = // get the selected book
if (bookToDelete.authorMember && [bookToDelete.authorMember.bookMembers count] == 1)
[context deleteObject:bookToDelete.authorMember];
[context deleteObject:bookToDelete];
}