From 6edea81be45b1de1098d9142a48c9c25bbab881c Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Wed, 14 Sep 2022 15:37:03 +0300 Subject: [PATCH] fix: type casting in cascade deletion --- DAO/Classes/RealmDAO/DAO/RealmDAO.swift | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/DAO/Classes/RealmDAO/DAO/RealmDAO.swift b/DAO/Classes/RealmDAO/DAO/RealmDAO.swift index 790ea2d..8b60bce 100644 --- a/DAO/Classes/RealmDAO/DAO/RealmDAO.swift +++ b/DAO/Classes/RealmDAO/DAO/RealmDAO.swift @@ -266,24 +266,23 @@ open class RealmDAO: DAO { } - private func cascadeDelete(_ object: AnyObject?) { - guard let object = object as? Object else { return } + private func cascadeDelete(_ object: Any?) { + switch object { + case let listObject as List: + for object in listObject { + cascadeDelete(object) + } - object.objectSchema.properties.forEach { - guard $0.type == .object else { return } - - if $0.isArray { - for element in object.dynamicList($0.name) { - cascadeDelete(element) - } - } else if !object.isInvalidated, let deletable = object as? CascadeDeletionProtocol { + case let object as Object: + if !object.isInvalidated, let deletable = object as? CascadeDeletionProtocol { deletable.objectsToDelete.forEach { child in cascadeDelete(child) } try? self.realm().delete(object) } - + default: + break } }