Сложность с настройкой FR C заключается не столько в нахождении sectionNameKeyPath
, хотя это может быть сложно, сколько в получении дескриптора сортировки, который согласуется с желаемыми разделами: дескрипторы сортировки, совместимые с выборкой запроса относительно ограничены.
В вашем случае у меня возникнет соблазн создать только одну рефлексивную связь между навыком и самим собой (relatedSkills
), но добавить целочисленный атрибут к сущности навыка, чтобы представить difficulty
. Вы можете выбрать шкалу (например, 0-9, 0-99 и т. Д.) И решить, насколько близка должна быть сложность (например, +/- 1 или +/- 2 и т. Д. c) для двух навыков, чтобы
Затем вы можете использовать предикат, чтобы выбрать только те навыки, которые связаны с выбранным вами навыком:
NSPredicate(format:"ANY relatedSkills == %@", chosenSkill)
и добавить дескриптор сортировки на основе difficulty
. Затем определите функцию для определения (используя правила, которые вы выберете), является ли данный Навык «проще», «похожим» или «сложнее». Эта функция будет вашим sectionNameKeyPath
.
Обновление
Ну, поразмыслив за ночь, я понял, что был неправ. В приведенном выше сценарии sectionNameKeyPath
- это сложный бит: проблема в том, что он зависит от текущего выбранного навыка, но функция не может принимать никаких параметров, поэтому не может «знать», какой навык является текущим выбранным. Вернуться к чертежной доске ....