如何删除Realm中的对象?

pou*_*v23 5 realm ios

在Realm中删除似乎令人难以置信的未被记录......或者我错过了什么?如何从列表中删除对象?示例在哪里?

我有一个带有List的对象A. 我有另一个对象B也有一个List C有一个参考备份到它的父A

我想删除一个B及其所有子对象C.如果我删除一个CI想要从它的父集合A中删除它.

我很难过......并且发现Realm docs只提供两个例子令人难以置信:

try! realm.write {
  realm.delete(cheeseBook)
}
try! realm.write {
  realm.deleteAll()
}
Run Code Online (Sandbox Code Playgroud)

TiM*_*TiM 9

首先,您不应该需要手动实现从子级到其父级的引用.Realm实现了一种反向关系功能,允许子对象自动查找它们所属的对象.

class C: Object {
    let parent = LinkingObjects(fromType: A.self, property: "c")
}
Run Code Online (Sandbox Code Playgroud)

Realm还不支持级联删除(这里有一个问题)因此仅仅删除顶级对象并期望该对象List属性中的任何对象也被删除是不够的.有必要直接捕获这些对象,并在删除其父对象之前手动删除它们.

let childObjects = b.subObjects
try! realm.write {
    realm.delete(childObjects)
    realm.delete(b)
}
Run Code Online (Sandbox Code Playgroud)

(那应该可以工作,但如果没有,请将所有子对象复制到普通的Swift数组,然后从那里执行)

如果您Object完全删除它,它也将从任何List实例中删除,因此删除C应自动删除其在A中的引用.

对不起,你遇到了麻烦!我已经记录了一个问题,表明有关从Realm删除对象的文档已经过审核和改进.:)

  • 哇七个月后仍然没有改善:( (2认同)