Связывание упорядоченной связи с NSArrayController

Как связать контент NSArrayController с объектами в упорядоченном состоянии?

В моей модели Core Data у меня есть отношение неупорядоченных ко многим, и NSArrayController, Content Set которого привязан к этому отношению от родительского объекта. Это отлично работает, данные доступны из NSArrayController, без проблем.

В ходе разработки я решил, что было бы лучше разрешить пользователям вручную переупорядочивать эти дочерние объекты, поэтому я изменил отношение на упорядоченное. Теперь, когда мой NSArrayController создается из моего nib, появляется следующая ошибка:

Cannot create NSSet from object Relationship '...' fault on managed object ... of class _NSFaultingMutableOrderedSet

Теперь, на самом деле, я думаю, что все это имеет смысл: это упорядоченные отношения, так что теперь я получаю упорядоченный набор. Было бы неуместно привязать его к Content Array, так как теперь NSOrderedSet, а не массив. Мой вопрос: Теперь как мне привязать эти данные отношения к NSArrayController?

Ответ 1

Основная проблема заключается в том, что отношения Core Data с привязкой к-многим возвращают NSOrderedSet, а NSOrderedSet не является подклассом NSSet. Любые привязки контроллера массива, которые ожидают, что NSSet завершится с ошибкой.

Tom Fewster имеет подробное сообщение в блоге, описывающее использование NSValueTransformer, чтобы обойти этот недостаток, конвертируя NSOrderedSet и NSArray на лету. Он также предоставляет примерную реализацию Github.

Ответ 2

Я столкнулся с этим обсуждением во время поиска, чтобы увидеть, были ли какие-либо новые разработки на этом фронте. В приложении для доставки я в настоящее время привязываю массив содержимого контроллера массива к [email protected], и он работает просто отлично, не уверен, что я обнаружил, что сам или кто-то еще предложил его где-то.