Удаленные объекты CoreData, созданные с помощью MagicalRecord в Swift

#ios #objective-c #core-data #swift #magicalrecord

#iOS #objective-c #основные данные #swift #magicalrecord

Вопрос:

В моей базовой модели данных у меня есть объекты с префиксом ICD_ . Для каждой сущности у меня есть подкласс с префиксом CD_ . Подклассы с префиксом CD_ реализуют только статические методы получения.

Когда я создаю объект с помощью MagicalRecord, я должен использовать класс с префиксом ICD_, а не с CD_ . В противном случае у меня есть SIGABRT:

» entityForName: не удалось найти объект с именем ‘CD_User’ в этой модели».

Если я уменьшу свой объект ICD_ до моего CD_Entity, он будет работать в Objective-C. То же самое в Swift вызывает SIGABRT. Это вполне естественно, потому что выделяется родительский объект, а не дочерний класс, поэтому обычно его невозможно удалить.

Итак, я ищу решение, которое позволяет использовать мои подклассы с префиксом CD_ с MagicalRecord .

Комментарии:

1. Если ваши CD_* подклассы реализуют статические геттеры и ничего больше, тогда зачем вам вообще нужно уменьшать?

2. Я согласен с вами, в Objective-C это работает, но в Swift это вызывает SIGABRT.

3. Это звучит как ошибка в Obj-C, тогда как Swift обрабатывает ее правильно.

4. Попробуйте использовать категории вместо подкласса для расширения ваших объектов.

5. Нет, если вы сохраняете категорию в отдельном исходном файле.

Ответ №1:

Либо ваша модель данных загружена неправильно, либо вы используете неправильное имя для доступа к объектам. Вы можете увидеть, какие имена содержит ваша модель данных, используя метод -entitiesByName в NSManagedObjectModel

Комментарии:

1. Я знаю, что мои объекты в базовой модели данных имеют имена с префиксом ICD_. Например , ICD_User, ICD_Basket и так далее… Для каждого из этих объектов у меня есть подклассы с префиксом CD_ . Например: CD_User , CD_Basket . Чтобы создать объект с помощью MagicalRecord, я должен вызвать метод MR_createEntity с классами с префиксом ICD_ . Но я хотел бы создать экземпляры классов CD_ вместо классов ICD_. Как я могу это сделать с помощью MagicalRecord?

2. Поэтому я думаю, мне не нужно использовать -entitiesByName метод.