Все эти «NSOrderedSet был добавлен позже, и, таким образом, не должен играть хорошо с другими компонентами» ошибки сводишь меня с ума ...Управление нумерованного Core Data Отношения Использование NSArrayController
У меня есть два управляемых объекта и упорядоченное соотношение 1: N между ними, которое поддерживается экземпляром (или более точным подклассом) NSOrderedSet
. Я хочу управлять этими отношениями с помощью NSArrayController
, чтобы получить прибыль от функций, которые он предлагает (управление выбором, привязка контента, привязки к просмотрам, например NSTableView
).
Поскольку NSOrderedSet
не подкласс NSSet
, то contentSet
связывания NSArrayController
не работает с этой взаимосвязью. Я нашел following thread и попытался реализовать упомянутые там предложения.
Первое предложение заключается в использовании связывания contentArray
и трансформатора значения для преобразования упорядоченного набора в массив на лету. Проблема с этим решением заключается в том, что переназначает контента каждый раз, когда производится изменение, чего я не хочу.
Второе предложение, приведенное в упомянутой теме, заключается в использовании связывания contentArray
и применении оператора @array
к пути ключа модели. Я пробовал это, но базовое отношение было не касалось вообще при добавлении/удалении объектов через NSArrayController
.
Другой вариант, который я нашел, это использовать дескрипторы сортировки с привязкой contentSet
. Это потребовало бы, чтобы отношение было неупорядоченным, чтобы сделать работу по связыванию contentSet
и ввести новый атрибут , используемый, в частности, для управления порядком. Кроме того, для этого потребуется пользовательский механизм заказа, и он будет испортить модель. Честно говоря, я хотел бы избежать этого решения.
Мой вопрос довольно ясен: есть ли способ управлять упорядоченными отношениями данных ядра с использованием NSArrayController
? Если да, это лучший способ, вызывающий как можно больший боль?