Swift 项目未构建

Posted

技术标签:

【中文标题】Swift 项目未构建【英文标题】:Swift Project not Building 【发布时间】:2014-06-06 15:39:27 【问题描述】:

我正在尝试将我的一个项目从纯 Objective-C 转换为 Swift,但一直遇到 Xcode 问题。对于任何 Sprite Kit、Obj-C 或 Obj-C/Swift 项目,一切都将成功建立索引、清理、构建和运行。但是,当项目仅由 .swift 文件组成时,Xcode 会挂起索引和构建,并且不会做任何其他事情。我尝试禁用索引,删除 DerivedData 文件夹,甚至完全重新安装 Xcode 6 以及相关的库文件,但似乎没有任何效果。有关如何解决此问题的任何想法?

【问题讨论】:

这是一个测试版...报告这个错误? 这可能是一个错误,也可能不是。但是您能否举一个独立的示例,以便其他人至少可以尝试找出问题所在。 (您可以制作一个显示此行为的最小示例并将其发布在 Github 上)。 这里有同样的问题。我纯粹出于 swift 创建了一个单一视图项目,而 Xcode 只是永远保持索引,从而降低了整个计算机的速度。在 Activity Monitor 中有一个名为“swift”的进程,它占用了大量的内存和 CPU。我必须强制退出该过程。 我也中了。尝试重新启动 Xcode 并重新启动,没有修复。索引占用 300% CPU(在 4 核机器上)并且构建似乎根本没有运行,我认为它等待索引完成。 也有同样的问题。在这里发现另一个类似的问题:***.com/questions/24310246/xcode-6-beta-not-compiling(这里也没有解决方案) 【参考方案1】:

我已经追踪到我正在使用的一些特定的源代码(特别是数组中的元组)锁定了索引器。

除了避免在项目中包含特定的源代码之外,似乎没有任何解决方法。

我向 Apple 提交了一个错误,雷达编号 17241603。

【讨论】:

我自己尝试使用一般的元组(而不是在数组内)。我确实有一个我很满意的回滚点,所以我不得不完全删除带有元组的方法(将其更改为只返回一个值似乎没有帮助)。只有在 Xcode 重新启动后,SourceKitService 才停止使用我所有的 RAM。它似乎通常位于 50MB 左右,但已经达到 6GB。我最终陷入了一个恶性循环,因为它会很快耗尽我所有的内存并使计算机停止运行。 哇,它真的是数组中的元组。谢谢!【参考方案2】:

此错误将与我们的项目状态和源代码有关。 我回滚了我的项目的一些提交,xcode 成功索引了我的项目。

在我的情况下,当我的项目声明大字典时,xcode 无法索引。 (删除后我成功索引了。)

【讨论】:

谢谢我刚刚注释掉了一些数组文字,现在我的项目构建了。你的字典问题让我想试试:) 我也非常感谢。将内部字典的一部分移出到单独的声明中允许我的项目构建。【参考方案3】:

我也遇到了同样的问题,分析如下代码找到解决办法

func toDictionary() -> NSDictionary  
        return [
            "smartCoins" : smartCoins ?? 0,
            "name" : name ?? "",
            "birthDate" : birthDate ?? "",
            "photo" : photo ?? "",
            "gender" : gender ?? "",
            "zoneId" : zoneId ?? "",
            "cityId" : cityId ?? "",
            "username" : username ?? "",
            "id" : id,
            "smartShopperIds" : smartShopperIds ?? [String](),
            "followers" : followers ?? 0,
            "voucherIds" : voucherIds ?? [String](),
            "friend" : isFriend ?? false
        ]
    

事实证明?? 运算符增加了编译时间。因此,当它被使用几次(一到三次)时,编译时间增加但完成。然而,当拥有更多时,编译永远不会结束。

我希望这会有所帮助。

【讨论】:

【参考方案4】:

您好,我也遇到了同样的问题并解决了。

转到产品 -> 单击停止。直到你看到索引 停下来。

它对我有用。如果您不运行,请尝试停止运行

试试看,如果还有其他问题,请告诉我。

【讨论】:

试过了,没有运气。 @Matthew 对不起,伙计。最好安装新的 xcode6-beta4。【参考方案5】:

没有选择,需要手动转换。目前还没有自动转换。

【讨论】:

【参考方案6】:

我在永远编译 xcode 7 时遇到了同样的问题。我发现是数组中 map() 的初始化导致了这个问题。我切换到手动使用 append() 并解决了问题。这是详细研究 http://applytech.me/blog/build-stuck-after-upgrading-from-xcode-6-to-xcode-7/ 希望对你有帮助

【讨论】:

【参考方案7】:

XCode 8 beta 6 对我来说挂在 Swift 编译上。原来是类层次结构中的循环引用。即我有类似的东西:

class Foo : Foo 
    // etc
 

这是通过从更复杂的层次结构重构而来的,我没有注意到。显然编译器没有检测到循环,并进入一个无限循环:(。

【讨论】:

以上是关于Swift 项目未构建的主要内容,如果未能解决你的问题,请参考以下文章

Swift 类未添加到 Obj-C 项目中 swift 的自动生成标题中

swift项目第七天:构建访客界面以及监听按钮点击

未定义的符号 Swift.UnsafeMutableBufferPointer

构建纯Swift可可触摸框架

Xcode 中使用较低 4.0.3 版本而不是 5.0.1 的 Swift 构建设置未强制执行

构建纯 Swift Cocoa Touch 框架