假设我有来自api的5个对象。
我使用realm.add(item, update: true)
存储它们,创建或更新 5个对象。
下次,从服务器端删除一个项目。
因此,当我之后调用api时,领域对象的总数应为4.不是5。
使用realm.add(item, update: true)
不会从api中删除未包含的项。它只存储添加或更新。
处理这个问题的最佳方法是什么?
答案 0 :(得分:2)
这在概念上非常简单,只需跟踪您从服务器响应中看到的对象并删除其余对象:
var objectsToDeleteIDs = Set(realm.objects(Item.self).value(forKey: "id") as! [String])
realm.begineWrite()
for item in serverItems {
realm.add(item, update: true)
objectsToDeleteIDs.remove(item.id)
}
let objectsToDelete = realm.objects(Item.self).filter("id IN %@", objectsToDeleteIDs)
realm.delete(objectsToDelete)
try realm.commitWrite()