Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift RLMRealm,删除对象时,如何从RLMArray中的引用中删除该对象_Swift_Realm - Fatal编程技术网

Swift RLMRealm,删除对象时,如何从RLMArray中的引用中删除该对象

Swift RLMRealm,删除对象时,如何从RLMArray中的引用中删除该对象,swift,realm,Swift,Realm,我正在使用RLMRealm开发购物清单应用程序。我有一个Item对象,它表示您可能购买的商品的名称。我还有一份购物清单,里面有很多物品。如果我删除一个项目,是否有一种简单的方法可以从它可能存在的每个数组中删除该项目 我从这个开始: // Look for this item in shoppingList.list and remove also for shoppingList in ShoppingList.allObjects() { for i in 0..<(shopp

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

我从这个开始:

// 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)
        }
    }
}
//在shoppingList.list中查找此项目并将其删除
用于shoppingList.allObjects()中的shoppingList{

对于0中的i..我也遇到了同样的问题。我不确定。是否启动/提交事务?

首先,正如romanvbabenko提到的,您需要在写事务中执行类似这样的更改

其次,当您对
RLMResults
RLMArray
进行变异时,您无法安全地对其进行变异——在Realm的未来版本中,这将导致引发异常

最好的方法是:


item.realm.deleteObjects(item.LinkingObject类(ShoppingList.self,forProperty:“list”))