1

我的模型中有一个父实体“List”和一个名为“UserList”的子实体(子实体),它只是一种列表。“UserList”没有自己的属性或关系,它继承了 List 的所有内容。List 与 ListItem 具有一对多的关系。

我要求 XCode 4.2 生成 NSManagedObject 子类。对于 List 它会生成我期望的内容,包括,

- (void)insertObject:(NSManagedObject *)value inListItemsAtIndex:(NSUInteger)idx;
- (void)removeObjectFromListItemsAtIndex:(NSUInteger)idx;
...

然而,生成的“UserList”类没有声明任何方法,如果它被声明为“List”的子类,那将是可以的,但这不是它生成的。

@interface UserList : NSManagedObject
@end

UserList 真的是 List 的子类吗?我可以只更改标题吗?还是发生了更复杂的事情?

4

1 回答 1

3

有几件事要检查。首先,确保您已为 List 和 UserList 实体指定了类名,然后确保 UserList 已将 List 声明为其父实体。

发电机很挑剔。如果您没有在模型 GUI 中专门指定类名,它会即时生成它们。不幸的是,这意味着,根据生成它们的顺序,有些可能不会使用正确的信息生成(想象首先生成 UserList ......如果你没有专门给 List 一个类名,它只知道使用NSManagedObject)。

按照惯例,我总是在模型 GUI 中专门指定类名。当我专门为每个实体分配一个类(在你给实体命名的地方)时,我没有看到这种情况发生,但我想它可能会发生。

尝试重新生成类文件。这次它可能会正确生成。

编辑

评论后澄清...

注意:不幸的是,Xcode 在这件事上非常一致。如果您没有明确地为实体提供类名,那么引用它的其他人将使用“错误的”类名生成。

我建议为您的工作流程遵循以下选项之一。

  1. 始终在 GUI 中为每个实体分配类名。

  2. 第一次生成类时,总是生成两次。

  3. 使用 mogenerator https://github.com/rentzsch/mogenerator#readme而不是 Xcode 类生成器。

于 2012-04-29T03:02:14.133 回答