Я новичок в Realm (Swift) и стараюсь использовать лучшую архитектуру.Как фильтровать данные по экрану
Предположим, у меня есть экран 1, где я загружаю объекты A, B и C, которые сохраняю в базе данных Realm и отображаются. Затем я перехожу на экран 2, где я загружаю объект того же типа, но загружаю другие объекты C, D и E. Если я вернусь к экрану 1, я не хочу найти себя с A, B, C, D и E. Я хочу найти A, B и C, как раньше, поэтому мне нужно отфильтровать.
Я подумал о двух стратегиях: Первым из них является сохранение на экране 1 массива uuids моего объекта и avec Результаты, на которых я запрашиваю объект, содержащий мою таблицу uuids, но это не работает, потому что мой массив uuids неактивен, поэтому мои изменения не будут вызваны тем фактом, что я добавляю или удаляю uuids из массива uuids.
Вторая стратегия - добавить свойство переходного процесса в модель, чтобы узнать, где отображать, какие объекты. Проблема в том, что если оба экрана содержат объект C, то свойство переходного процесса будет обновляться на последнем экране, который я посещаю, и объект не будет виден на предыдущем экране, так как измененное свойство изменено.
Я сделал это за один раз, но объект, хранящийся в стандартном массиве Swift, не является хорошим решением, потому что предположим, что я удаляю объект, который находится на обоих экранах 1 и экране 2 на экране 2, если я вернусь для экрана 1 объект будет по-прежнему находиться в моем массиве и освобожден, так что он сработает, сказав, что объект уже недействителен. – Livio
. Можно проверить статус объекта, проверив его свойство 'object.invalidated'. Когда вы возвращаетесь на этот экран, все, что вам нужно сделать, это проверить, что этот объект все еще действителен, и полностью отменить этот экран, если это не так. – TiM
О, спасибо, я не знал! Это действительно потрясающе. Это означает, что вы можете в конечном итоге фильтровать массив с фильтром ({! $ 0.invalidated}) на viewWillAppear экрана A, чтобы он не разбился, когда вы вернетесь на этот экран! – Livio