【问题标题】:Add CoreDataGeneratedAccessors to Existing Class将 CoreDataGeneratedAccessors 添加到现有类
【发布时间】:2015-03-08 03:16:25
【问题描述】:

我有两个现有的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 重新生成,但我有一堆自定义代码,所以这是不可能的。

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

【问题讨论】:

    标签: ios objective-c core-data


    【解决方案1】:

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

    1. 不要更改 NSManagedObject 子类的自动生成文件
    2. 使用您自己的代码在单独的文件中创建类扩展

    这样,您可以重新生成自动生成的标头,而不会覆盖您自己的代码。

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

    【讨论】:

    • 非常感谢您的回答。我得出了同样的结论。我的问题是一个类别是否会更好。似乎扩展需要在 @implementation 文件中,这样它们就会被重新生成所破坏。
    【解决方案2】:

    我将所有未生成的代码移入了一个分类,重新生成了NSManagedObject 类,并成功编译并运行了应用程序。我发现了一个很好的分类和扩展概述at this link

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2012-07-24
      相关资源
      最近更新 更多