核心数据 - 在objective-c项目Xcode 8中子类化NSManagedObject的正确方法

Kes*_*Xie 9 xcode core-data objective-c ios swift

我刚刚开始学习如何使用Core Data今天遇到问题,当我必须从NSManagedObject我的objective-c项目中继承.我正在关注斯坦福iOS 7课程(我来自Swift背景并希望了解更多信息objective-c)斯坦福大学开发iOS 7应用程序:第13讲 - 核心数据和表格视图 以下是我迄今为止所做的工作:

第一

创建我的CoreDataModel.xcdatamodeld文件,并像这样配置我的实体

在此输入图像描述

下一个

随着CoreDataModel.xcdatamodeld文件突出显示,我转到Editor并尝试创建NSManagedObject子类

在此输入图像描述

创建了四个Swift文件,包含一个空的桥接头文件MyProject-Bridging-Header.h.

在此输入图像描述

我有很多编译器错误: 在此输入图像描述

我很困惑为什么xcode会Swift为我生成文件而不是objective-c一个,因为我已经使用objective-c我的语言进行配置.

如何配置我的头文件以objective-c识别我的Swift文件或者是否有办法创建objective-c子类文件,例如.m.h文件?

重新声明错误可能来自codegen问题 Xcode自动子类生成

我的驱动数据有以下文件 在此输入图像描述

任何建议表示赞赏.

Łuk*_*uła 13

在"项目"导航器中选择模型时,在"文件检查器"中,您可以选择生成代码的语言:

改变生成模型的语言


Arp*_*gre 8

这里的答案已经介绍了如何生成Swift文件.我的其他问题涉及其他问题.

Xcode现在支持在建模工具中自动生成NSManagedObject子类.生成的文件放在DerivedData中,并在保存模型后在第一个版本上重建.它们也被Xcode索引,因此命令单击引用并按文件名快速打开.

有关更多信息,请参阅Apple文档.

无效的NSManagedObject重新声明的解决方案:

对于XCode 8.1,在NSManagedObject通过编辑器创建之前,选择您的实体,转到数据模型检查器,然后在Codegen下选择'手动/无',如下所示:

然后创建NSManagedObject子类.

如果您已经创建了NSManagedObject子类,请执行以下步骤:

  1. 转到当前的.xcdatamodeld,将所有实体 Codegen设置为'Manual/None'.
  2. 保存项目,删除派生数据.
  3. 清理并构建项目.

它应该工作.