将 CoreDataGeneratedAccessors 添加到现有 Class
Add CoreDataGeneratedAccessors to Existing Class
我有两个现有的 NSManagedObject
子类,需要在两者之间添加新的关系。
我尝试手动将关系添加到模型(两侧:一个是 'to one',另一个是 'to many')。然后我在两个头文件中添加了相关的方法签名。一个对象称为 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]
的调用是 'unrecognized selector.'
我查看了建议 Core Data - how to generate CoreDataGeneratedAccessors? 检查关系是否正确定义,但建议是使用 NSManagedObject
重新生成,但我有一堆自定义代码,所以这是不可能的。
如有任何帮助,我们将不胜感激!谢谢...
我认为这种情况的最佳方法(必须将自己的代码添加到 auto-generated NSManagedObject subclass)如下:
- 不要更改 NSManagedObject 子classesauto-generated 文件
- 在单独的文件中使用您自己的代码创建一个 class 扩展名
这样,您可以重新生成 auto-generated headers 而不会覆盖您自己的代码。
在您的情况下,我建议将您自己的所有代码移动到 class 扩展中,然后 re-create auto-generated 文件。
我将所有未生成的代码移至 分类,重新生成 NSManagedObject
类,并成功编译并 运行应用程序。我找到了关于分类和扩展的精彩概述 at this link
重要说明:我不得不删除NSManagedObject
类,然后重新生成 .否则,类 不会被替换。
我有两个现有的 NSManagedObject
子类,需要在两者之间添加新的关系。
我尝试手动将关系添加到模型(两侧:一个是 'to one',另一个是 'to many')。然后我在两个头文件中添加了相关的方法签名。一个对象称为 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]
的调用是 'unrecognized selector.'
我查看了建议 Core Data - how to generate CoreDataGeneratedAccessors? 检查关系是否正确定义,但建议是使用 NSManagedObject
重新生成,但我有一堆自定义代码,所以这是不可能的。
如有任何帮助,我们将不胜感激!谢谢...
我认为这种情况的最佳方法(必须将自己的代码添加到 auto-generated NSManagedObject subclass)如下:
- 不要更改 NSManagedObject 子classesauto-generated 文件
- 在单独的文件中使用您自己的代码创建一个 class 扩展名
这样,您可以重新生成 auto-generated headers 而不会覆盖您自己的代码。
在您的情况下,我建议将您自己的所有代码移动到 class 扩展中,然后 re-create auto-generated 文件。
我将所有未生成的代码移至 分类,重新生成 NSManagedObject
类,并成功编译并 运行应用程序。我找到了关于分类和扩展的精彩概述 at this link
重要说明:我不得不删除NSManagedObject
类,然后重新生成 .否则,类 不会被替换。