在swift中获取NSManagedObject类实例的副本
我有一个Addon
类的实例(inheritance自NSManagedObject
) foundSampleAddon
。 我想创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
然后修改你想要的属性。