2016-09-20 87 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