Я конвертирую приложение для использования Core Data из ранее только находящихся в памяти объектов. Это приложение извлекает данные из удаленного API и ранее созданных объектов в памяти с инкрементирующим идентификатором, и я выяснил, в каком направлении он перемещался (поворачивая страницы), в зависимости от того, увеличивается ли этот увеличивающий ID. И основывается на этом заполненном контроллере детского представления (который предоставляется для PageViewController) с правильной информацией. Логика выбора объекта находилась в методе делегата didFinishAnimating
pageViewController, потому что он был вызван только один раз на переход страницы.PageViewController: определение «следующего» и «предыдущего» при использовании Core Data
Теперь я храню некоторые объекты в Core Data, и мне нужно знать, что такое «следующий» и «предыдущий», чтобы правильно настроить следующий и предыдущий контроллеры представлений, которые подаются на экран PageViewControllers. Как и прежде, я получаю удаленный API, но теперь создаю объекты, управляемые основными данными, на основе данных, полученных из API.
Я мог бы создать собственное поле счетчика в Core Data, но я подумал, есть ли лучший способ сделать это? Я не хочу использовать Core Data, как RDBMS.
В целом - как люди, использующие основные данные, могут использовать приложения PageViewController с динамической коллекцией объектов с потенциально отсутствующей «последней страницей»?
Примечание: этот проект написан в Свифт.
Почему бы не просто сохранить ссылки на следующие и предыдущие объекты, тогда вы просто загрузите следующий или предыдущий объект в зависимости от направления, в котором движется пользователь. Они будут установлены как отношения в Core Data –
Неплохая идея , Конечно, для предметов, которые уже видели, это вариант, трудность заключается в том, что пользователь может «прыгать» в разные части большого, по сути, неупорядоченного списка сторон сервера. Поэтому у меня были бы эти отдельные связанные серии объектов, и мне нужно решить, что делать, если они в конечном итоге перекрываются. Ядро проблемы заключается в том, что мои исходные данные неупорядочены, и я пытаюсь наложить порядок на него. Поэтому мне просто нужно переосмыслить весь мой подход, возможно, заранее заработав все метаданные. –
Нет никакого способа обойти это. Вы хотели бы как-то отсортировать порядок объектов, вам нужно иметь поле для сортировки. Будь то objectID, createDate, itemOrder или что-то, что вам подходит, вам нужно будет сохранить это в базе данных. Остальное просто извлекает запись, используя дескриптор сортировки, и все готово. – Rog