fix: type casting in cascade deletion
This commit is contained in:
parent
37521d7688
commit
6edea81be4
|
|
@ -266,24 +266,23 @@ open class RealmDAO<Model: Entity, RealmModel: RLMEntry>: DAO<Model> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private func cascadeDelete(_ object: AnyObject?) {
|
private func cascadeDelete(_ object: Any?) {
|
||||||
guard let object = object as? Object else { return }
|
switch object {
|
||||||
|
case let listObject as List<RealmModel>:
|
||||||
|
for object in listObject {
|
||||||
|
cascadeDelete(object)
|
||||||
|
}
|
||||||
|
|
||||||
object.objectSchema.properties.forEach {
|
case let object as Object:
|
||||||
guard $0.type == .object else { return }
|
if !object.isInvalidated, let deletable = object as? CascadeDeletionProtocol {
|
||||||
|
|
||||||
if $0.isArray {
|
|
||||||
for element in object.dynamicList($0.name) {
|
|
||||||
cascadeDelete(element)
|
|
||||||
}
|
|
||||||
} else if !object.isInvalidated, let deletable = object as? CascadeDeletionProtocol {
|
|
||||||
deletable.objectsToDelete.forEach { child in
|
deletable.objectsToDelete.forEach { child in
|
||||||
cascadeDelete(child)
|
cascadeDelete(child)
|
||||||
}
|
}
|
||||||
|
|
||||||
try? self.realm().delete(object)
|
try? self.realm().delete(object)
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue