在swift中获取NSManagedObject类实例的副本

我有一个Addon类的实例(inheritance自NSManagedObjectfoundSampleAddon 。 我想创build这个类的实例的副本,并改变它的属性。 我想使用下面的代码复制这个实例,但我不知道如何实现它,因为我得到一个exception

– [Addon copyWithZone:]:无法识别的select器发送到实例0x7f9d1d805000

我不知道如何使用copyWithZone:函数创build类的这个实例的copyWithZone: 。 我已经发布了下面的代码,我试图将foundSampleAddon复制到一个新的身份, sampleAddonToAdd ,然后更改其属性productAddonPrice

 if let sampleAddonToAdd = foundSampleAddon.copy() as? Addon { if addonCategoriesSent![sentIndexPath!.section].replacePreviousBasePrice == 1 { sampleAddonToAdd.productAddonPrice = NSNumber(int: 0) } addonsToAddBackToProduct.append([keyAnAddon: sampleAddonToAdd, keyAddonCount: 1]) } 

NSManagedObject不符合NSCopying协议。 如果要使用相同的数据创build新logging,只需插入一个新对象,并将第一个对象的值分配给第二个对象。

正如这里所说的

你必须创build第二个NSManagedObject并复制属性。

 let sampleAddonToAdd = NSEntityDescription.insertNewObjectForEntityForName("Addon", inManagedObjectContext: self.managedObjectContext) as! Addon sampleAddonToAdd.productAddonPrice = foundSampleAddon.productAddonPrice.copy() // copy properties 

然后修改你想要的属性。