Группа расстояний NSFetchedResultsController разделы - PullRequest
0 голосов
/ 22 июля 2011

Я использую Core Data для просмотра таблицы. Мои данные упорядочены по расстоянию от вашего текущего местоположения. Я хотел бы иметь новый раздел для предметов с 5, 10 и 20 милями.

Мое значение расстояния сохраняется в хранилище данных как NSInteger, и я получаю его, используя NSNumber в моей объектной модели.

Я немного поискал и обнаружил, что мне нужно использовать атрибут sectionNameKeyPath, чтобы разделить данные.

Моя проблема в том, что я не знаю лучшего способа группировки данных. Во время поисков я наткнулся на временное свойство или использовал категорию NSNumber, чтобы определить, в каком разделе должен быть элемент.

Является ли любой из этих методов лучшим способом получения моего конечного результата, если так, может ли кто-нибудь предоставить какие-либо подробности о том, как его реализовать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 23 июля 2011

Вы должны добавить производный атрибут к объекту (он не является строго необходимым в модели), назовем его range.Я бы сделал это свойство доступным только для чтения, вы можете кэшировать значение или нет.

Когда 0-5, вернуть 5, 5.x - 10, вернуть 10 и т. Д.

Тогдаустановите range в качестве sectionNameKeyPath.

0 голосов
/ 23 июля 2011

Если вы хотите строго настроенное поведение раздела, вам нужно создать подкласс NSFetchedResultsController, чтобы получить желаемое поведение.Подробности смотрите в документации по классу NSFetchedResultsController.

В этом случае вам потребуется создать подкласс, потому что вы не смотрите на один упорядоченный атрибут, такой как алфавитная первая буква строкового атрибута, а скорее на диапазон, в котором каждый атрибут попадает в,

Это более чистое решение, чем изменение модели данных, поскольку вы можете использовать его для отображения данных различными способами во многих различных таблицах без необходимости запутывать вашу модель данных.

...