Упорядоченные записи CoreData - PullRequest
3 голосов
/ 14 октября 2011

Как я знаю, CoreData не сохраняет порядок записей, как они были добавлены. Поэтому, если мы хотим сохранить массив объектов в CoreData, мы должны добавить поле типа orderId к объекту и заполнить его вручную. Но похоже, что лежащая в основе база sqlite хранит индекс для записей, так может быть, есть способ хранить упорядоченные объекты без добавления дополнительного поля?

1 Ответ

8 голосов
/ 14 октября 2011

Краткий ответ: НЕТ.Длинный ответ:

  • , чтобы сохранить заказ, информация о заказе должна быть сохранена.Это может быть неявным, используя дескриптор сортировки для существующего свойства, как предложено ShiShi.Или вы можете добавить новое свойство для явной цели поддержания порядка сортировки в экземплярах.

  • SQLite поддерживает неявный первичный ключ, rowId, если он не определен клиентомкод.Но если клиентский код определяет целочисленный первичный ключ, SQLite будет использовать его в качестве rowId.Другими словами, нет никакого преимущества в пространстве или времени, чтобы попытаться быть умным и использовать rowId SQLite.Обратите внимание, что вы можете сообщить Core Data, что ваша собственность должна быть проиндексирована.Базовые данные могут определять или не определять другой первичный ключ.

  • Попытка зависеть от того, как Core Data реализует свое постоянное хранилище, представляет собой ** BAAAAD ** идея: ваш код нарушит совместимость с другими магазинами, прошлым настоящим или будущим, и, скорее всего, сломается с будущим обновлением.

  • Возможно, вы заметили, что Core Data теперь поддерживаетупорядоченные отношения с Mac OS X Lion или iOS 5. Базовая реализация, скорее всего, использует специальный дополнительный столбец для хранения информации о заказе.

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