使用CoreData生成器在DerivedData文件夹中复制文件

Lud*_*vic 42 core-data swift3 xcode8

我正在尝试从我的datamodel生成NSManagedModel.生成有效但在我遇到很多错误之后:

错误:文件名"Station + CoreDataProperties.swift"使用了两次:'/ Users/Me/MyApp/Model/CoreData/LCD + CoreDataProperties.swift'和'/ Users/Me/Library/Developer/Xcode/DerivedData/MyApp-gwacspwrsnabomertjnqfbuhjvwc/Build/Intermediates/MyApp.build/Debug-iphoneos/MyApp.build/DerivedSources/CoreDataGenerated/Model/Station + CoreDataProperties.swift':0:注意:文件名用于区分具有相同名称的私有声明

我尝试清理build文件夹和derivedData目录硬删除.我正在使用Xcode 8 BETA也许这是一个错误?

Vla*_*yuk 71

我在Xcode 8.1中得到了这个以下步骤解决了这个问题.请注意,订单很重要.

1)在Core Data模型中创建实体.

2)在课程部分下,进行如下图所示的设置.

模块:当前产品名称

Codegen:手动/无

3)生成NSManagedObject子类.

在此输入图像描述

  • 对于其他人,如果您的Core Data模型位于嵌入式框架中,则需要将`Module`设置为`Global`,否则您将最终编译两个版本的子类(由Xcode自动生成的版本,以及你定义了)._当您进行此更改时,请确保重新创建子类!_如果您不这样做,则最终会出现错误. (3认同)

kev*_*kev 11

这篇文章帮我自己解决了这个问题.我个人认为这是一个Xcode错误.虫子与否这是一个巨大的鸡蛋和鸡蛋的情况.

我碰到了这个:

  1. 使用核心数据创建了一个新项目
  2. 生成我的NSManagedObject子类+扩展名(while codegen: ClassDefinition)
  3. 我不小心将生成的类保存在Wrong文件夹中
  4. 我删除了生成的文件
  5. 在我想要的文件夹中重新生成
  6. - Xcode used twice错误

正如其他人发布的那样,我一直在清理我的构建(和clean build folder),但从未解决构建问题.

我终于弄清楚你是否最初创建了你NSManagedObject生成的类codegen: ClassDefinition,因为我不知道你是否因为鸡和鸡蛋问题而被锁定.

然后我删除了自动生成的类,认为我必须重新生成,所以我做了.重新生成后,我会used twice再次出现构建错误.我手动进入../DerivedSources/CoreDataGenerated/Model/..并删除了重复项.再次,我重新思考我只有一份(在我的项目中),但我错了.如果codegen: ClassDefinition最初设置,则Xcode将继续创建auto-generated类+扩展并将它们放在隐藏文件夹中../DerivedSources/CoreDataGenerated/Model/...我重复了这个鸡蛋和鸡蛋几次,然后继续前进.

我后来意识到你确实需要标记codegen: Manual/None然后让事情恢复同步你需要删除../DerivedSources/CoreDataGenerated/Model/..项目中和项目中的自动生成的文件,如果你还有.

小心设置codegen: Manual/None,对我来说这有点棘手,因为codegen: Manual/None不会坚持.我必须多次在实体之间来回点击以对每个实体设置为双/三重检查codegen: Manual/None.然后自动生成文件.此时,您自动生成的文件的唯一副本应该在您的项目中,而不是在../DerivedSources/CoreDataGenerated/Model/...

最后,我认为这是一个错误,因为如果你指定codegen: Manual/None我不希望Xcode自动生成文件,但它会将它们放在你的项目中.更令人困惑的是codegen: ClassDefinition,如果你的设置是,谁知道Xcode会将文件放在一个埋藏的目录中,但它可以在你的项目中使用.我的牛肉是自动生成的文件不受源控制,如果我更换计算机,我必须知道在新站上自动生成它们.

希望这有助于其他人!

干杯!


oya*_*lhi 8

这确实不是一个bug.由于@Morrowless建议创建类定义和属性扩展.如果不需要,请生成代码之前在Codegen下选择Manual/None.如果已生成代码,只需删除它们,然后 从菜单中再次尝试(在设置手动/无后).Editor->Create NSManagedObject Subclass...

请注意,在下图中,班级名称"联系人"特定于我的项目.您将看到您的实体名称.

在此输入图像描述


100*_*ams 5

如果您生成的CoreData子类与codegen: ClassDefinition您基本上搞砸了.解决它的唯一方法是:

  1. 删除CoreData子类.
  2. 删除派生数据文件夹.
  3. 清理您的项目(CMD + K).
  4. 生成新的CoreData子类,这次选择Codegen: Manual/NoneModule: Current Product Module