我正在尝试更新领域列表,但是由于某种原因,它会删除最后一个,而仅添加新的。
这就是我在做什么:
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进行更新。如果领域中不存在具有相同主键值的对象,则将插入该对象。否则,将使用任何更改的值来更新现有对象。