Xcode/Swift'文件名使用两次'构建错误

Rob*_*Bob 37 xcode compilation file ios swift

我是Swift的新手,在我(可能)通过CocoaPods正确安装第三方框架后,我正在努力解决错误.

错误如下.

<unknown>:0: error: filename "MainController.swift" used twice: '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.swift' and '/Users/myname/Desktop/ProjectName/ProjectName/Controllers/MainController.swift'
<unknown>:0: note: filenames are used to distinguish private declarations with the same name
Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1
Run Code Online (Sandbox Code Playgroud)

据我可以从其他论坛收集而且看似显而易见的是我必须删除两次使用的文件之一.但是我无法看到它们将被安装两次.如果我从/ Controllers文件夹中删除该文件,则错误将变为"找不到文件"等.

所以我的问题是,这些冲突的文件将在何处定位,如何安全地删除其中一个?或者更多的是,只有一个文件,但它被使用了两次 - 在这种情况下,我该如何阻止它?

非常感谢.


好的我觉得评论已经丢失所以我在这里澄清一下,看看是否可以触发一个答案,因为从昨天开始就无法构建和运行.

我现在只有Pods-> Pods/MainController文件夹中的swift文件.

当我构建时,我得到一个未找到的文件.但是它要查找的文件位于App-> Controllers文件夹中,这是我从中删除的文件.如果我把文件放在那里我得到'使用过两次'错误.

那么如何阻止它试图在控制器中找到该文件并在Pod中查找它?

谢谢

fra*_*nck 149

在目标的"Build Phases""Compile Sources"设置中检查文件是否包含两次.合并project.pbxproj时可能会发生这种情况.

  • 完美的。重新定位后我遇到了这个问题。谢谢! (2认同)

Jos*_*nor 80

如果这是与核心数据相关的,并且您没有Xcode在构建时为您生成实体(您自己手动创建它们),并且您遇到此问题,则可能是您没有检查更新.xcdatamodelld中的实体文件.会发生什么是Xcode将创建现有类的重复类,因为您告诉Xcode在运行时生成实体.

在数据模型检查器中,将"模块"更改为"当前产品模块",将"Codegen"更改为"手动/无".
在此输入图像描述


Jos*_*osh 11

主要想法是......是的,检查重复的类.但就我而言,我没有.我有一个大项目,添加了WatchKit,很多东西,在某些时候我有一个"重复"类.我删除了副本,但问题仍然存在.要修复它我做了这个:

  • 首先,备份项目外部文件夹中的违规文件.
  • 删除重复文件和初始文件
  • 对于每个目标:转到Build Phases,并删除有问题文件的所有提及.
  • 再次将文件添加到您的项目中,Voila!

  • 谢谢 !项目设置>"构建短语"中的双重输入是个问题. (4认同)

Kri*_*ofe 10

我通过从Compile Sources中删除使用过的两次文件来解决这个问题,如下图所示.选择文件,然后单击 - .然后清洁和建立.

在此输入图像描述


Ank*_*kur 8

尝试搜索,如果你添加了相同的ViewController - MainController.swift两次.

如果没有,那么class MainController在codebase中搜索.

关于Pods,最好使用所有Pod作为框架,

所以尝试'use_frameworks!'在你的使用Podfile,然后从终端重新安装pod" pod install".

  • 好吧这是我的问题 - 我随机在Build Phases> Compile Sources中找到了对/ controllers/pagingmenucontroller文件的引用.这似乎是一个可能的罪魁祸首所以我删除它,因为文件不存在.....现在我的桥接头失败cos RestKit.h无法找到,即使这从来没有曾经是一个问题. (3认同)

Ale*_*hin 7

要检查文件是否包含在编译源中两次而不滚动数百个苍蝇,请执行以下操作:

  • 在Xcode中选择文件
  • 转到右侧面板上的文件检查器(左上角图标)
  • 取消选中并再次选中目标复选框

在此处输入图片说明


小智 5

当您使用github或类似工具进行合并时,这可以在您的project.pbxproj中.

这可以修复你喜欢的文本编辑器中打开project.pbxproj删除重复声明.

希望能解决你的问题.