prevent crash "Terminating app due to uncaught exception 'RLMException', reason: 'Object has been deleted or invalidated.'"
This commit is contained in:
parent
37ace7bf3a
commit
a5f94a9873
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue