将CoreDataGeneratedAccessors添加到现有类

时间:2015-03-08 03:16:26

标签: ios objective-c core-data

我有两个现有的NSManagedObject子类,需要在两者之间添加新的关系。

我尝试手动将关系添加到模型中(两侧:一个是“一个”,另一个是“多个”)。然后我在两个头文件中添加了相关的方法签名。一个对象称为GameEvents,另一个对象是Player

在GameEvents.h文件中:

@property (nonatomic, retain) Player *player
- (void)addPlayerObject:(Player *)value;
- (void)removePlayerObject:(Player *)value;

并在Player.h文件中

@property (nonatomic, retain) NSSet *events;
- (void)addEventsObject:(GameEvents *)value;
- (void)removeEventsObject:(GameEvents *)value;
- (void)addEvents:(NSSet *)values;
- (void)removeEvents:(NSSet *)value;

我得到的错误是在GameObject.m源中调用[self addPlayerObject:p]是一个'无法识别的选择器'。

我查看了建议Core Data - how to generate CoreDataGeneratedAccessors?检查关系是否已正确定义,但建议是使用NSManagedObject重新生成,但我有一堆自定义代码,因此无法实现。

任何帮助将不胜感激!感谢...

2 个答案:

答案 0 :(得分:0)

在我看来,针对这种情况的最佳方法(必须将自己的代码添加到自动生成的NSManagedObject子类)如下:

  1. 不要更改NSManagedObject子类的自动生成的文件
  2. 在单独的文件中创建一个包含您自己代码的类扩展
  3. 这样,您可以重新生成自动生成的标头,而不会覆盖您自己的代码。

    在您的情况下,我建议您将所有自己的代码移动到类扩展中,然后重新创建自动生成的文件。

答案 1 :(得分:0)

我将所有未生成的代码移动到分类中,重新生成NSManagedObject类,并成功编译并运行应用程序。我发现了对分类和扩展at this link

的精彩概述

一个重要提示:我必须删除 NSManagedObject 类,然后重新生成。否则,课程没有被替换。