Подтвердить что ты не робот

Переходный разделNameKeyPath & NSSortDescriptor NSFetchedResultsController

У меня есть список задач в Core Data. Я забираю их в UITableView с помощью NSFetchedResultsController.

Мне нужны пользовательские разделы в пользовательском порядке:

  • OVERDUE
  • ACTIVE
  • ONGOING
  • ОТПРАВЛЕНЫ
  • ЗАВЕРШЕНА

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

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

Я понимаю, почему я не могу этого сделать, это не помогает мне решить проблему!

Я пробовал:

  • Подкласс NSFetchedResultsController для настроить создание разделов и названий индексов. Возможно, я делаю это неправильно, но это просто изменяет имена и порядки разделов, а не то, как много вещей идет в этих разделах (что очень важно).

  • Заполнение массивов в разрезе и подача их на стол (неуклюжие, медленный, но полностью работает).

  • Разрыв текущих и отложенных задач (что работает, но не идеально). Таким образом, я могу сортировать по умолчанию и управлять секциейNameKeyPath с помощью переходных значений.

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

Спасибо заранее!

Приветствия

4b9b3361

Ответ 1

Самое простое решение - добавить постоянный атрибут раздела (или преобразовать существующий атрибут переходного процесса). Сделайте его набором сортируемых значений (которые вы показываете во время выполнения, используя имена, которые вы хотите). Всякий раз, когда вы обновляете какую-либо запись, повторно комментируйте и сохраняйте атрибут раздела.

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