如何删除使用`createorupdate`时从服务器API中删除的Realm对象?

时间:2017-06-01 13:35:12

标签: realm

假设我有来自api的5个对象。

我使用realm.add(item, update: true)存储它们,创建或更新 5个对象。

下次,从服务器端删除一个项目。

因此,当我之后调用api时,领域对象的总数应为4.不是5。

使用realm.add(item, update: true)不会从api中删除未包含的项。它只存储添加或更新。

处理这个问题的最佳方法是什么?

1 个答案:

答案 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()