Как я могу изменить тип NSManagedObject? - PullRequest
1 голос
/ 19 октября 2010

Допустим, у меня есть иерархия наследования следующим образом:

Устройство <- EthernetDevice <- WirelessDevice </p>

Таким образом, беспроводное устройство является подклассом EthernetDevice, который является подклассом устройства.

Хорошо, поэтому, если пользователь создает объект Device, а затем пользователь решает, что это на самом деле беспроводное устройство, как я могу изменить тип объекта? В данный момент я создаю новый управляемый объект WirelessDevice и, по существу, перемещаюсь по каждому свойству объекта Device и назначаю его тому же свойству объекта WirelessDevice. Затем сообщаем ManagedObjectContext об удалении объекта Device. Это самый простой способ? Существует ли какая-либо форма приведения типов или метод стиля копирования, который также уведомляет ManagedObjectContext об изменении?

Спасибо

1 Ответ

0 голосов
/ 24 февраля 2011

Прежде всего, с Core Data, вы обычно хотите избежать наследования. Если вы хотите иметь возможность удобно переключаться с EthernetDevice на WirelessDevice, я бы просто имел на устройстве сущность со свойством «type» со значением из перечисления, подобного этому:

typedef enum _DeviceTypes{
   EthernetDeviceType,
   WirelessDeviceType
}

Таким образом, переключение с одного типа на другой проще, чем изменение этого значения. Насколько отличаются методы в вашем классе EthernetDevice от вашего класса WirelessDevice? Если они кардинально отличаются, то создание нового объекта и удаление старого может быть самым простым способом (тонны блоков switch () {} во всем коде могут лишить возможности чтения и т. Д.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...