在 Xcode 6 中从核心数据数据模型创建 NSManagedObject 子类

Posted

技术标签:

【中文标题】在 Xcode 6 中从核心数据数据模型创建 NSManagedObject 子类【英文标题】:Create NSManagedObject Subclass from Core Data Data Model in Xcode 6 【发布时间】:2015-01-22 19:42:00 【问题描述】:

我在核心数据数据模型中有两个实体。它们之间是一对多的关系。当我导航到 Editor --> Create NSManagedObject Subclass... 时,我的模型已生成,但在很多方面我没有得到像 - (void)addPhotosObject:(NSManagedObject *)value; 这样的强类型方法签名关系。

根据我所读到的,至少在 Xcode 5 中,这是因为关系一侧的类是首先创建的,所以关系的多侧的类还不存在。我看到的建议是再次简单地 Create NSManagedObject Subclass... 并且该方法应该生成具有强类型类的方法,但方法签名不会更改为强类型。

获取强类型方法签名有技巧吗?

【问题讨论】:

究竟什么是强类型方法签名? @Mundi 与其声明一个采用泛型类NSManagedObject 的方法,不如采用我的特定类类型。在这个例子中(来自 CS193P),我有一个 Photographer 类,它有一个 NSSetPhoto。理想情况下,方法签名看起来像- (void)addPhotosObject:(Photo *)value;,而不是您在问题中看到的使用NSManagedObject 的签名。有意义吗? 好的,我明白了。 “强类型”实际上意味着不同的东西。您的意思通常称为NSManagedObject 子类。 我意识到强类型通常在引用一种语言时使用,并且 Photo 确实是 NSManagedObject 的子类,但我认为这是解释我的问题的好方法。诚然,我发现这个问题难以沟通。您对如何写这个问题@Mundi 有什么建议吗?也许我可以更新这个问题,让它更清楚一点,同时从你的方法中学到一些东西。干杯 不使用“强类型”会更清楚。 【参考方案1】:

删除最初由创建 NSManagedObject 子类... 创建的 NSManagedObject 子类后,只需再次选择 创建 NSManagedObject 子类... 重新生成它们,方法签名最终是强类型的,这给了我一个 Photo 作为像这样的参数 - (void)addPhotosObject:(Photo *)value; 而不是 NSManagedObject

【讨论】:

以上是关于在 Xcode 6 中从核心数据数据模型创建 NSManagedObject 子类的主要内容,如果未能解决你的问题,请参考以下文章

升级到 XCode 6.3.2 后核心数据模型找不到自动生成的实体类(使用 Objective-C 而不是 Swift)

无法在 Xcode 中打开数据模型文件

iOS 核心数据映射模型

核心数据迁移 - 我们可以在 xcode 中有多个 .xcmapingmodel 文件吗?

IOS/xcode:将核心数据从应用委托移动到模型类

修改核心数据模型后重新创建类定义的更好方法?