Я пытаюсь выяснить, как удалить локально сохраненный набор сущностей, которые исключены из того, что я получаю от сервера API. В этом случае, скажем, 10 сущностей хранятся локально в области, и сервер отправляет мне 8 сущностей. 6 из них соответствуют объектам, которые у меня уже есть, 2 новые. Локально у меня есть 4 объекта, которые «устарели», потому что сервер их не предоставляет.
Конечно, я мог удалить все и сохранить новые объекты, но я пытался сделать вещи более эффективными.
Однако я не понимаю, как только я создал быстрый Набор, который представляет разницу между локальной и удаленной ситуацией, как я могу удалить локальные объекты, потому что область говорит мне, что я могу удалять только объекты, которые принадлежат области.
Я пытался работать с набором результатов, но я не могу найти способ отфильтровать объект с помощью предложения «IN», которому предоставляется набор объектов, даже если я вспоминаю, что делал что-то подобное в прошлом.
let realm = try! Realm()
try! realm.write{
let oldEvents = Array(self.events!)
var newEvents = [Event]()
for event in events{
if let e = Mapper<Event>().map(JSONObject: event){
newEvents.append(e)
}
}
//here I create a set which contains the difference between remote and local entitites, and create an Array with them
let difference = Array(Set(newEvents).subtracting(Set(oldEvents)))
//this is obviously wrong
let objToDelete = realm.objects(Event.self).filter("event in %@", difference)
realm.delete(objToDelete)
//realm.delete(difference)->this gives the error that you can delete only objects that belong to the realm
//here I would like to create or update the new events
for newEvent in newEvents{
realm.create(Event.self, value: event, update: true)
}
}
Буду очень признателен за любую подсказку о том, как справиться с этой ситуацией. Спасибо!