我正在尝试更新领域列表,但是由于某种原因,它会删除最后一个,而仅添加新的。

这就是我在做什么:

if !RealmService.shared.ifPortfolioExists(name: newPortfolio.name){//Check if portfolio with given name already exists
            newPortfolio.transactions.append(newTransaction)//Add new transaction to the portfolio's transactions list
            newTransaction.portfolio = newPortfolio//Link portfolio to transaction

            RealmService.shared.create(newPortfolio)
            RealmService.shared.create(newTransaction)

        }else{
            newPortfolio.transactions.append(newTransaction)
            newTransaction.portfolio = newPortfolio
            RealmService.shared.create(newTransaction)

        }


这是创建函数:

func create<T: Object>(_ object: T){
        do {
            try realm.write{
                realm.add(object, update: true)
            }
        } catch {
            post(error)
        }
    }


我也有primaryKeys(),如文档中所述。

我做错了,有人可以解释一下吗?

最佳答案

根据Realm class description,对象必须具有主键才能使更新生效。既然您没有提到,我假设您的领域对象缺少它。


  仅当对象具有主键时才传递true进行更新。如果领域中不存在具有相同主键值的对象,则将插入该对象。否则,将使用任何更改的值来更新现有对象。

10-05 20:22