2012-08-15 33 views
2

我有一个自定义类Thing:具有adminName属性的NSManagedObject。NSmanagedObject copyWithZone问题

我想在这个Thing类中创建一个copyWithZone函数,但是当我运行该应用程序时它说setAdminName不存在。

我在执行文件我使用

@dynamic adminName; 


-(id) copyWithZone: (NSZone *) zone 
{ 
Thing *regCopy = [[Thing allocWithZone: zone] init]; 
regCopy.attendeeNum = [self adminName]; 

return regCopy; 
} 

我不相信我可以改变@dynamic到@synthesize因为我使用的核心数据。

+1

你想达到什么目的? – 2012-08-15 18:27:14

回答

5

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

+0

嗯,它不像'只是将值分配给第一个对象第二“,因为副本的目的是完全独立于其他副本的更改。如果将引用的值从一个对象复制到另一个对象,则对该引用值所做的任何更改都会改变NSManagedObject的两个副本。是? – 2017-06-25 22:56:16

4

你需要创建一个新的东西,你创建的原始东西像

一点相同的方式* regCopy = [NSEntityDescription insertNewObjectForEntityForName:@ “东西” inManagedObjectContext:self.managedObjectContext]

+0

是的,但是你要插入一个新的对象到数据库中,这不一定合意。 – cfischer 2015-04-22 21:46:49

+0

@cfisher如果使用NSManagedObject构造函数而不是NSEntityDescription,则应该可以将nil设置为managedObjectContext。这避免了坚持你的新对象:'[[NSManagedObject alloc] initWithEntity:[NSEntityDescription entityForName:entityName inManagedObjectContext:context] insertIntoManagedObjectContext:nil];' – Ben 2015-08-03 15:33:19