RLMRealm,在删除对象时,如何从RLMArray中的引用中删除它

时间:2015-01-17 03:29:51

标签: swift realm

我正在使用RLMRealm开发购物清单应用。我有一个Item对象,表示您可能购买的商品的名称。我还有一个ShoppingList,它包含一个RLMArray项。如果我删除一个项目是否有一种简单的方法可以从每个数组中删除该项目?

我从这开始:

// Look for this item in shoppingList.list and remove also 
for shoppingList in ShoppingList.allObjects() {
    for i in 0..<(shoppingList as ShoppingList).list.count {
        if ((shoppingList as ShoppingList).list[i] as ShoppingItem).item == item {
            (shoppingList as ShoppingList).list.removeObjectAtIndex(i)
        }
    }
}

哪个不行。它不会抛出任何错误,它似乎只留下空的物品。

1 个答案:

答案 0 :(得分:0)

首先,正如romanvbabenko所提到的,你需要在写入事务中执行这样的更改。

其次,你在变异时不能安全地改变RLMResultsRLMArray - 在未来版本的Realm中,会导致异常被抛出。

执行此操作的最佳方法如下:

item.realm.deleteObjects(item.linkingObjectsOfClass(ShoppingList.self, forProperty: "list"))