Основные объекты данных, несколько конфигураций сборки - PullRequest
0 голосов
/ 11 марта 2019

У меня есть 3 конфигурации сборки: Отладка, Релиз и Разработка.Для разработки я создал новую схему с новым bundleID, названием продукта и т. Д., Чтобы я мог видеть, какая из них DEV и DEBUG на моем телефоне.

Я использую Core Data и для DEBUG с исходным идентификатором bundleID все работает нормально, но когда я переключаюсь на использование Development, я получаю сообщение об ошибке при попытке создать новую сущность с именем:

NSEntityDescription.insertNewObject(forEntityName: "MyEntity", into: managedContext)

Ошибка, которую я получаю:

Could not cast value of type 'NSManagedObject_MyEntity_' (0x600002d62b20) to 'AppName_DEV.MyEntity' (0x102bf9368).

Похоже, что он пытается получить класс MyEntity из моей схемы "AppName DEV", а не "AppName".Я не могу найти какие-либо настройки сборки, в которых я мог бы указать, чтобы она использовала одну и ту же модель?

Есть какие-нибудь идеи о том, как использовать базовые данные в нескольких конфигурациях сборки?

1 Ответ

0 голосов
/ 11 марта 2019

Хорошо, я нашел проблему.Так как я пытался восстановить очень старое приложение, изначально написанное на swift 2, мне пришло в голову, что я могу дважды проверить, как была создана модель данных.После нескольких часов работы с процессом настройки основных данных я изменил две вещи, которые наконец-то заставили его работать.

1.) В файле .xcdatamodeld, справа от Data Model Inspector, сделайтеубедитесь, что у вас есть поле Module EMPTY У меня было внутри AppName, которое совпадает с исходным именем цели.

2.) Я добавил @objc (EntityName) кУ меня был подкласс NSManagedObject.

  • Конечно, я очистил проект, удалил приложение из симулятора и снова установил его.

Если у вас возникла такая проблема, надеюсь,это поможет вам, удачи!

...