prevent crash "Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'"

This commit is contained in:
Ivan Smolin 2021-04-23 15:11:24 +03:00
parent 37ace7bf3a
commit a5f94a9873
1 changed files with 11 additions and 10 deletions

View File

@ -267,21 +267,22 @@ open class RealmDAO<Model: Entity, RealmModel: RLMEntry>: DAO<Model> {
private func cascadeDelete(_ object: AnyObject?) { private func cascadeDelete(_ object: AnyObject?) {
if let deletable = object as? CascadeDeletionProtocol { switch object {
deletable.objectsToDelete.forEach { child in case let realmArray as ListBase:
cascadeDelete(child)
}
}
if let realmArray = object as? ListBase {
for i in 0..<realmArray.count { for i in 0..<realmArray.count {
let object = realmArray._rlmArray[UInt(i)] let object = realmArray._rlmArray[UInt(i)]
cascadeDelete(object) cascadeDelete(object)
} }
} case let realmObject as Object:
if !realmObject.isInvalidated, let deletable = realmObject as? CascadeDeletionProtocol {
if let realmObject = object as? Object { deletable.objectsToDelete.forEach { child in
cascadeDelete(child)
}
}
try? self.realm().delete(realmObject) try? self.realm().delete(realmObject)
default:
break
} }
} }