You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Realm/MongoDB+SwiftUI:如何永久删除关联的Animal对象?

解决Realm中永久删除Animal对象的问题

你遇到的问题根源在于List.remove(at:)仅移除了AnimalModel与AnimalGroup的关联关系,并没有真正从Realm数据库中删除AnimalModel对象本身。要实现永久删除,需要直接通过Realm实例操作目标对象。

正确实现方式

  1. 先获取要删除的AnimalModel实例
  2. 在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:42:34