2010-10-19 44 views
1

比方说,我有一个继承层次如下:如何更改NSManagedObject的类型?

设备< - EthernetDevice < - WirelessDevice

所以无线设备EthernetDevice,这是设备的子类的子类。

好的,所以如果用户创建一个设备对象,然后用户决定它实际上是一个无线设备,我该如何改变对象的类型?目前,我正在创建一个新的WirelessDevice管理对象,并基本上遍历Device对象的每个属性,并将其分配给WirelessDevice对象的相同属性。然后告诉ManagedObjectContext删除Device对象。这是最简单的方法吗?是否有一种形式的类型转换或复制样式方法也会通知ManagedObjectContext这个变化?

谢谢

回答

0

首先,与核心数据,你通常希望避免继承。如果你想成为能够方便地从EthernetDevice到WirelessDevice切换,我只想对设备实体与“型”与值由枚举型类似这样的属性:

typedef enum _DeviceTypes{ 
    EthernetDeviceType, 
    WirelessDeviceType 
} 

这样更改从一种类型到另一种类型更改一个值更简单。你的EthernetDevice类和你的WirelessDevice类的方法有什么不同?如果它们截然不同,那么创建一个新实体并删除旧实体可能实际上是最简单的方法(整个代码中的大量switch(){}块可以从可读性等方面带走)。