Realm/MongoDB+SwiftUI:如何永久删除关联的Animal对象?
解决Realm中永久删除Animal对象的问题
你遇到的问题根源在于List.remove(at:)仅移除了AnimalModel与AnimalGroup的关联关系,并没有真正从Realm数据库中删除AnimalModel对象本身。要实现永久删除,需要直接通过Realm实例操作目标对象。
正确实现方式
- 先获取要删除的
AnimalModel实例 - 在Realm的写入事务中调用
realm.delete()方法,该操作会同时移除对象与其他模型的关联,并永久从数据库中删除对象。
修改后的按钮代码示例
Button(action: { // 获取Realm实例 guard let realm = try? Realm() else { return } // 定位要删除的Animal对象 let targetAnimal = animalGroup.animals[animalIndex] // 执行写入事务完成删除 do { try realm.write { realm.delete(targetAnimal) } } catch { print("删除Animal失败:\(error)") } }) { Image(systemName: "minus") }
你尝试的代码问题说明
你之前写的$animalGroup.animal.remove(ID)存在多处问题:
- 属性名错误:应该是
animals而非animal List的remove方法不支持通过ID直接删除,只能通过索引或对象实例操作- 核心缺失:没有调用
realm.delete(),这才是Realm中永久删除对象的唯一途径
内容的提问来源于stack exchange,提问作者Coenraad Prinsloo
相关产品推荐
相关产品推荐

