На этот вопрос есть многочисленные ответы; от чтения в тренировках из объекта списка дней и итерации по ним для удаления каждого запроса, соответствующего дням, и затем удаления
Давайте сделаем запрос. Объекты областей загружаются лениво, поэтому, если их 10 или 10 000, влияние на память будет минимальным и позволит избежать итерации, которую l oop мог бы замедлить пользовательский интерфейс.
Первое, на что нужно обратить внимание, - это обратная связь между Дни и их родительские объекты Workout.
Мы можем использовать это отношение, чтобы выбрать, какие тренировки принадлежат к каким дням, а затем удалить их.
Во-вторых, realm.delete может быть передан за один раз. удаляемый объект или последовательность объектов .
Вот код. Я не знаю, какие объекты дня и тренировок вы хотите удалить, поэтому я собираюсь удалить тренировки, которые go с объектом первого дня.
if let day = realm.objects(Days.self).first {
let thisDaysWorkouts = realm.objects(Workouts.self).filter("ANY parentDay == %@", day)
try! realm.write {
realm.delete(thisDaysWorkouts)
}
}
После того, как они будут удалены, вы можете удалить родительский объект.
Обратите внимание, что в настоящее время в Realm нет каскадного удаления.
В качестве несвязанного примечания, вы можете рассмотреть возможность предоставления своим объектам Первичных ключей . Это поможет организации в долгосрочной перспективе по мере роста проекта.