2014-10-30 180 views
0

我读过一篇关于核心数据迁移的文章:http://www.objc.io/issue-4/core-data-migration.html。我不明白下面一行:核心数据迁移addAuthorsObject

[destinationInstance performSelector:@selector(addAuthorsObject:) withObject:author]; 

destinationInstance是一本书NSManagedObject,作者是一位作家NSManagedObject。它们是相关的(一本书可以有多个作者,一个作者可以写多本书)。上面的代码应该建立这种关系。但是,这个addAuthorsObject在哪里:被声明?我如何添加一个关系NSManagedObject到我自己的项目中的另一个NSManagedObject?

回答

1

您发布的密码与[destinationInstance addAuthorsObject:author]相同; addAuthorsObject:是一种由Core Data在运行时自动添加到您的NSManagedObject子类中的方法,因为您声明该对象具有一对多关系authors

因此addAuthorsObject:未被声明;它是在架构加载时创建的。你不能看它,因为它实际上并没有写在任何地方。

Xcode具有Core Data模式的图形编辑器;你应该使用它来添加额外的对象,属性和关系。那么你可能想为你的模型对象创建自定义子类,但实际上并不需要它。

+0

太棒了!这就是我诚实的想法。但我犯了一个愚蠢的错误。我忘了添加多对多关系(默认是一对一),而当我调用此运行时add-Object:方法时,Xcode抛出了一个异常。谢谢你,小伙伴。 – 2014-10-31 02:48:31