2010-10-19 8 views
1

Disons que j'ai une hiérarchie d'héritage comme suit:Comment changer le type de NSManagedObject?

Appareil < - EthernetDevice < - WirelessDevice

Ainsi, un dispositif sans fil est une sous-classe de EthernetDevice, qui est une sous-classe de périphériques. Ok, donc si un utilisateur crée un objet Device et que l'utilisateur décide ensuite qu'il s'agit en fait d'un périphérique sans fil, comment changer le type de l'objet? Pour le moment, je crée un nouvel objet géré WirelessDevice et je passe essentiellement à travers chaque propriété de l'objet Device et je l'affecte à la même propriété de l'objet WirelessDevice. Puis, dites à ManagedObjectContext de supprimer l'objet Device. Est-ce le moyen le plus simple? Existe-t-il une forme de typecasting ou une méthode de style de copie qui notifie également le ManagedObjectContext du changement?

Merci

Répondre

0

Tout d'abord, avec Core Data, vous voulez généralement éviter l'héritage. Si vous voulez être en mesure de passer facilement d'un EthernetDevice à un WirelessDevice, je voudrais juste avoir sur l'entité de l'appareil avec un « type » propriété avec une valeur d'un ENUM semblable à ceci:

typedef enum _DeviceTypes{ 
    EthernetDeviceType, 
    WirelessDeviceType 
} 

De cette façon, le changement de un type à l'autre est une question plus simple de changer cette valeur. Quelle est la différence entre les méthodes de votre classe EthernetDevice et votre classe WirelessDevice? Si elles sont radicalement différentes, la création d'une nouvelle entité et la suppression de l'ancienne pourraient en fait être le moyen le plus simple (des tonnes de blocs switch() {} partout dans votre code peuvent éliminer la lisibilité et autres).

Questions connexes