Сгруппировать результаты фильтрации по дате, не сохраняя все в памяти - PullRequest
0 голосов
/ 17 июня 2019

У меня есть список Documents, созданный за несколько дат. Мне нужно показать UITableView с документами, и в каждом разделе должен быть свой день.

Я собираюсь сохранить несколько тысяч Documents в области, поэтому я пытаюсь найти способ сгруппировать Documents по creationDate без вывода результатов фильтрации документов в память.

Также может случиться так, что будет получен новый документ, поэтому мне придется обновить всю таблицу и снова вывести ее в память, чтобы добавить один документ.

Я не мог найти способ сделать это. Я также думаю о разбиении на страницы результатов, поэтому у меня есть меньший список для «обработки» в памяти, но Realm тоже не может разбивать на страницы, так что я не уверен, что делать дальше ...

Мой Document выглядит так:

final class Document: Object {

    @objc dynamic var createdByUserId: String?
    @objc dynamic var creationDate: Date?
    @objc dynamic var userId: String?
}

1 Ответ

0 голосов
/ 17 июня 2019

Я решил это раньше:

Метод 1 [Очень медленный, но наименьший объем обслуживания] : во время выполнения создайте массив, содержащий уникальные даты startOfDay для всех ваших creationDates ваших объектов Document.,Вызовите этот массив DateGroups.

В каждом объекте документа добавьте переменную dateGroup.

 final class Document: Object {
    @objc dynamic var createdByUserId: String?
    @objc dynamic var creationDate: Date?
    @objc dynamic var dateGroup: Date?
    @objc dynamic var userId: String?
 }

Теперь вы можете извлекать объекты из определенной группы dateGroup:

realm.objects(Document.self).filter("dateGroup = %@", Particular-Date-Group)

Метод 2 [Очень быстрый, но требует большого обслуживания] : Вы объявляете все как в методе 1. Однако вы должны создать Realm Object, который поддерживает активные dateGroups.Назовите его DateGroup и пусть у него будет только одна переменная с именем date или startOfDay.

Метод 2 быстрее, чем метод 1, но требует значительного обслуживания, потому что вы должны отслеживать, когда dateGroup должна быть добавлена ​​или удалена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...