Core data 使用CoreData生成器在DerivedData文件夹中复制文件
我正在尝试从我的数据模型生成NSManagedModels。生成工作正常,但在我遇到许多错误之后: 错误:文件名“Station+CoreDataProperties.swift”使用了两次: “/Users/Me/MyApp/Models/CoreData/Station+CoreDataProperties.swift”和 “/Users/Me/Library/Developer/Xcode/DerivedData/MyApp gwacwrsnabomertjnqfbuhjvwc/Build/Intermediates/MyApp.Build/Debug iphoneos/MyApp.Build/DerivedSources/CoreDataGenerated/Model/Station+CoreDataProperties.swift” :0:注意:文件名用于区分私有 同名声明Core data 使用CoreData生成器在DerivedData文件夹中复制文件,core-data,swift3,xcode8,Core Data,Swift3,Xcode8,我正在尝试从我的数据模型生成NSManagedModels。生成工作正常,但在我遇到许多错误之后: 错误:文件名“Station+CoreDataProperties.swift”使用了两次: “/Users/Me/MyApp/Models/CoreData/Station+CoreDataProperties.swift”和 “/Users/Me/Library/Developer/Xcode/DerivedData/MyApp gwacwrsnabomertjnqfbuhjvwc/Build
我尝试清理构建文件夹和derivedData目录硬删除。我使用的是Xcode 8 BETA版,可能是个bug?这不是bug。Codegen在DerivedData文件夹中生成这些文件,因此您不需要在项目中再次创建它们,因此出现编译错误 从Xcode 8.0发行说明: Xcode自动为核心数据模型中的实体和属性生成类或类扩展。自动代码生成是逐个实体启用和禁用的,并且对使用Xcode 8文件格式的新模型中的所有实体启用。此功能可用于升级到Xcode 8格式的任何数据模型。您可以使用数据模型的文件检查器指定Xcode是为数据模型生成Swift代码还是Objective-C代码 当为实体启用自动代码生成时,Xcode将创建 中指定的实体的类或类扩展 实体的检查器:使用指定的类名和源 放置在项目的衍生数据中。对于Swift和 Objective-C,这些类可以直接从项目的 代码。对于Objective-C,将为所有 在模型中生成的实体。头文件名符合 命名约定“DataModelName+CoreDataModel.h” 但是如果您在数据模型检查器的codegen下拉菜单下选择了类别/扩展(因为您想向模型添加逻辑):codegen将错误地生成类定义和属性扩展
解决方案是简单地删除属性扩展(ClassName+CoreDataProperties.swift)。您的项目现在应该可以编译了。这确实不是一个bug。正如@Morrowless所建议的,类定义和属性扩展都已创建。如果不需要,请在生成代码之前,在Codegen下选择手动/None。如果代码已经生成,只需删除它们,然后再次尝试从菜单中创建NSManagedObject子类…(设置手动/无后) 注意,在下图中,类名“Contact”是特定于我的项目的。您将看到您的实体名称 我在Xcode 8.1中得到了这个 对我来说,以下步骤解决了这个问题。请注意,订单很重要 1) 在核心数据模型中创建实体 2) 在“类”部分下,按下图所示进行设置 模块:当前产品名称 Codegen:手动/无 3) 生成NSManagedObject子类
遵循oyalhi和Vladimir Shutuk的指导后,(删除
NSManagedObject
文件,将实体codegen
更改为手动/无
),在重新生成NSManagedObject
文件并获得成功编译之前,我必须重新启动Xcode以允许它再次索引。这篇文章极大地帮助我自己解决了这个问题。我个人认为这是一个Xcode错误。不管有没有虫子,这是一个巨大的鸡和蛋的情况
我是通过以下方式发现这一点的:
NSManagedObject
子类+扩展(而codegen:ClassDefinition
)codegen:ClassDefinition
生成了CoreData子类,则基本上是错误的。解决此问题的唯一方法是:
Codegen:Manual/None
和Module:Current Product Module
为了完整起见……: 我只是遇到了同样的错误,但提出的解决方案都不起作用。让我感到困惑的是,对于一个(我认为)有问题的实体,即使从自动代码生成切换到手动代码生成,也没有起到任何作用 最后,我发现有几个实体具有相同的名称,但它们都共享相同的类名。原因是我复制粘贴了一个实体几次,以节省一些工作,因为它们也有一些共同的属性 结果表明,XCode通过添加1、2、,。。。更改为实体名称,但保留类名不变。由于现在实体名和类名是“不相关的”,重命名实体也不会改变类名
希望它能帮助别人-我也为此提交了一份错误报告。尝试删除派生数据,Xcode->File->Project Settings。@alvinvaghese Lit我在帖子中说过硬删除不起作用!感谢检查您的项目目录,再次检查
站点+CoreDataProperties.swift
不存在两次。您正在使用cocoapods
?如果是,则必须指定use\u框架在你的podfile
中添加code>并重新构建。请查看Apple Bug Reporter并再次阅读我的帖子!苹果用8.1解决了这个问题。请查看Apple Bug Reporter并再次阅读我的帖子!苹果用8.1解决了这个问题。刚刚下载了8.1。增加了一个测试