Merge pull request #1 from TouchInstinct/fix/cascade_delet

fix: type casting in cascade deletion
This commit is contained in:
Nikita Semenov 2022-09-14 15:55:24 +03:00 committed by GitHub
commit bb049169f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 11 deletions

View File

@ -266,24 +266,23 @@ open class RealmDAO<Model: Entity, RealmModel: RLMEntry>: DAO<Model> {
}
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<RealmModel>:
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
}
}