2016-09-20 94 views
4

删除在领域似乎是令人难以置信的没有记录...或者我错过了什么?你如何从列表中删除对象?这些例子在哪里?如何删除Realm中的对象?

我有一个列表对象A. 我有另一个对象B也用List C具有参考回升至其父

我想删除B及其所有子对象。如果我删除CI想从中删除其父母收藏A也是如此。

我难倒...并发现它令人难以置信的境界文档只提供了两个例子:

try! realm.write { 
    realm.delete(cheeseBook) 
} 
try! realm.write { 
    realm.deleteAll() 
} 

回答

7

首先蝙蝠,你不应该在任何时候需要手动执行从一个孩子的参考备份给其父母。 Realm实现了an inverse relationship功能,可让子对象自动查找它们所属的对象。

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

境界不支持级联删除,但(有an issue for it here),所以它是不够的,简单地删除一个顶级对象,并希望在该对象的List性质的任何对象也被删除。有必要直接捕获这些对象,并在删除父对象之前手动删除它们。

let childObjects = b.subObjects 
try! realm.write { 
    realm.delete(childObjects) 
    realm.delete(b) 
} 

(这应该工作,但如果没有,所有的子对象从那里复制到一个正常的斯威夫特阵列,而不是做)

如果删除Object顾左右而言他,这也将从任何List实例中删除,因此删除C应自动删除其在A中的引用。

对不起,您有麻烦!我已经记录了一个问题,提示从Realm中删除对象的文档已经过审查和改进。 :)

+2

哇七个月后,仍然没有改进:( – imobilizer

+1

这对我们目前来说不是一个高优先级的功能,但请随时在GitHub问题上跟踪此功能以添加您的支持。 ://github.com/realm/realm-cocoa/issues/1186 – TiM