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

时间:2015-12-02 15:34:19

标签: ios swift

我有一个Addon类的实例(继承自NSManagedObjectfoundSampleAddon。我想创建这个类实例的副本并改变其属性。我试图使用以下代码复制此实例,但我不知道如何实现它,因为我得到一个异常

  

- [Addon copyWithZone:]:无法识别的选择器发送到实例0x7f9d1d805000

我不知道如何使用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])
}

2 个答案:

答案 0 :(得分:1)

  

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

As said here

答案 1 :(得分:0)

您必须创建第二个NSManagedObject并复制属性。

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

然后修改您想要的属性。