Swift 2.0 отношение один ко многим - все еще NSOrderedSet?

В Swift 2.0 отношения "один ко многим" в Базовых данных все еще являются NSOrderedSets?

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

У кого-нибудь есть простой пример этого в Swift 2.0?

2 ответа

Решение

К сожалению, CoreData с swift все еще остается огромной болью, особенно при упорядоченных отношениях "один-много". Да, это все еще NSOrderedSet, который используется CoreData для многих отношений. Вопрос в том, как добавить / удалить элементы к этому. До сих пор Xcode никогда не мог правильно генерировать средства доступа для упорядоченного набора - даже в Objective, не говоря уже о Swift!!.

Существует следующая тема о сохранении отношений ко-многим в Swift: Как определить отношение CoreData в Swift?

Но, увы! Ничто из упомянутого в этой теме никогда не работает в мире Swift 2.0. Так какой же обходной путь сейчас? Я углубился в это, и единственный способ добиться этой работы - генерировать источники для рассматриваемых сущностей, в Задаче C, а не в быстром и экспорте их заголовков в заголовке моста. Также вам нужно убедиться, что вы включили важное исправление обходного пути для XCode, чтобы генерировать надлежащие методы доступа для упорядоченного набора:

https://github.com/CFKevinRef/KCOrderedAccessorFix

Вы должны убедиться, что для вызова этого исправления вызывается model.kc_generateOrderedSetAccessors() в коде создания модели в AppDelegate.

После этого вы можете безопасно начать использовать созданные средства доступа в своей модели для добавления элементов в отношение "многие".

Я создал пример проекта и сейчас на github, и надеюсь, что это поможет

https://github.com/shripada/CoreDataToManyRelationshipInSwift2.0

Только если вы отметите отношения с помощью опции "Заказано". Если нет, то это NSSet,

Я не согласен с принятым ответом, потому что в Swift 2.0 преодоление NSSet к Set происходит автоматически, поэтому, если вы можете создать подкласс сущности CoreData, вы можете просто написать:

@NSManaged var oneToManyOfTypeFoo: Set<Foo>

А затем добавление и удаление элементов становится тривиальным, потому что вы можете просто использовать insert а также remove методы из Set,

Другие вопросы по тегам