几天前,我遇到了类似的挑战。我想提供详细信息并与 SO 社区分享我的研究。
首先我找到了这个帖子,然后我点击了问题中的链接。
是的,没错,链接中标记的答案是正确的,但是这个问题的解决方案不适合我。
问题
就我而言,当我将项目中的文件夹层次结构更改为更方便且更适合我时,我遇到了这个问题。
@oOEric 选项不适合我,因为根据规则,Xcode 中的组层次结构应该与系统中的文件夹层次结构一致。
但我已经编译了大约 1680 个 swift 文件。
问题是我的编译文件路径太长,而且数量太大。
研究
然后我开始研究,发现 swift jira 有同样的错误。
这里有一些链接:
- Main
- Linked Issue 1
- Linked Issue 2
- Linked Issue 3
- Bug on Open Radar
但在这里我没有找到适合我的解决方案。
最让我满意的是 swift 开发人员的反应。
同样,这是 Xcode 方面的问题,而不是 Swift 方面的问题。在这里评论不会让 Xcode 工程师工作得更快!
(在 Apple,我们并非都是同一个人。)
好吧,经过这个回答,我终于确信如果是Xcode的bug,那么应该在Xcode中寻找解决方案。
解决方案
- 临时解决方案
您需要将项目在系统层次结构中移到更高的位置。
我选择这个,因为我的项目非常大,使用其他解决方案需要我一天以上的时间。
在我的例子中,我做了一个实验,计算出项目路径的长度应该不超过50个字符。
但这是一个临时解决方案。如果您的项目进一步发展,您将不得不缩短路径或使用其他解决方案。
- Cocoa Touch 框架目标
此方案适用于不使用依赖项的文件。
首先,您需要将 Cocoa Touch Framework 作为目标添加到您的主项目中。
此目标应自动添加到嵌入式二进制文件和链接框架和库。
在此之后,您需要找到一些没有依赖关系的文件并将目标成员更改为您的“TestTarget”。
不要忘记来自 cocoa touch 框架的类、属性、方法、枚举、协议应该具有开放或公共访问权限。
别忘了清理你的 DerivedData 文件夹。
- 模块化 iOS
此解决方案采用更集成的方法。
如果您想在 Cocoa Touch 框架中使用任何依赖项,您应该阅读本指南并为您的大项目进行更复杂的重构!
Link to solution
我认为这是最好的解决方案。
我希望这个重要的答案会对某人有所帮助!