在 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
类,它有一个 NSSet
和 Photo
。理想情况下,方法签名看起来像- (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)