【问题标题】:Intermittent Swift Framework Compiler Error间歇性 Swift 框架编译器错误
【发布时间】:2014-06-05 15:13:09
【问题描述】:

我正在 XCode 测试版中试用 Swift。特别是使用@IBDesignable 和@IBInspectable。我正在构建一个包含 (@IBDesignable) UIView 子类和简单 iOS 应用程序的框架,以便对其进行测试(都包含在工作区中并通过工作区链接)。几次成功构建后,我在框架构建输出中收到以下错误:

:0:错误:/Users/richardpj/Projects/Swift2/Swift2FW/build/Swift2FW.build/Debug-iphonesimulator/Swift2FW.build/unextended-module.modulemap:2:找不到伞头文件“Swift2FW.h” :0: 错误:无法构建 Objective-C 模块 'Swift2FW'

在你问我之前,我已经清理并删除了我的派生数据,但除了删除和重新创建工作区和项目文件之外,似乎没有什么能解决它。

关于错误来源的任何想法,如何复制(对于错误报告)或者我是愚蠢的。

编辑:自从这篇文章发布以来,我已经获得了 50 次浏览。听起来这是我应该报告的错误。关于如何做到这一点的任何想法?

【问题讨论】:

  • 您是否尝试过清理项目、重置模拟器然后关闭/打开 Xcode?有时它会有所帮助。
  • 是的,我已经尝试过所有这些东西以及更多。似乎项目文件以某种方式损坏了。到目前为止,以相同的方式重新创建它是唯一对我有用的解决方法。
  • 您可以报告错误here

标签: ios swift xcode6


【解决方案1】:

在制作自己的 swift 框架时,我收到错误“无法构建 Objective-C 模块”。

我通过转到“Link Binary With Libraries”并添加“UIKit”来修复它。

【讨论】:

    【解决方案2】:

    如果您在 Swift 中编写嵌入式框架,请检查您的项目设置 -> 框架目标名称 -> 构建阶段 -> 标题。目前(Xcode 6.2)此处公开部分中列出的任何头文件都可能导致此错误:

    <unknown>:0: error: could not build Objective-C module 'YourFrameworkName'

    【讨论】:

      【解决方案3】:

      当 .h 伞形文件与我的一个 swift 文件同名时,我看到了这个错误。一旦我更改了框架构建的 swift 文件的名称。

      Ex. Project Name: TestProject
      |_
        TestProject.h <=
        |_
          Models
          |_
            TestProject.swift <= 
      

      将带有箭头 (

      【讨论】:

      • 我的文件不是这样命名的。然而,自动生成的测试目标是。我会看看,让你知道。感谢您的反馈。
      • 创建了一个新的解决方案,其中包含与伞形标题不同的文件。确保删除了测试目标及其文件。仍然有同样的问题。经过几次构建后,它给出了相同的错误。 :(
      【解决方案4】:

      在我的例子中,我之前的构建设置覆盖了 Public Headers Folder Path (PUBLIC_HEADERS_FOLDER_PATH) 。将其清除为(新的?)默认值 $(CONTENTS_FOLDER_PATH)/Headers 修复了错误。

      【讨论】:

        【解决方案5】:

        就我而言,我所要做的就是打开嵌入式 Swift 框架目标的“编辑方案”窗口(产品 > 方案 > 编辑方案)并取消选中“共享”。我猜是因为还不支持非嵌入式 Swift 框架,所以共享框架方案意味着模块必须有一个 Objective-C 组件。

        您也可以在“管理方案”窗口中取消选中此项(产品 > 方案 > 管理方案...)。

        【讨论】:

          【解决方案6】:

          在多次遇到此问题并且有时诉诸重新创建整个项目后,我发现这个非常奇怪的构建问题通常是由于您设置了断点造成的。

          打开断点导航窗口 (CMD-7) 并删除所有断点。

          这通常为我解决了这个问题,但听起来很奇怪。

          当您单击边距以调查编译错误时,很容易意外添加断点。

          【讨论】:

          • 我的理智认为这可能是巧合,但是在我确实删除了框架项目中的一个异常断点之后,我还可以构建使用该框架的项目。然而,一段时间后它已经消失了(?),所以这可能是巧合。
          【解决方案7】:

          我不知道这是否对其他人有帮助,但我在某些测试期间已将 ProjectName-Swift.h 文件导入到 ProjectName.h(伞形头文件)文件中,当我删除该导入时,错误消失了,我能够再次构建。

          【讨论】:

            【解决方案8】:

            在我的情况下,这是因为我未能在我的其他目标的构建阶段将框架列为依赖项。一旦我这样做了,一切都很好。

            我认为这是因为这样可以确保框架在使用它的目标之前构建。

            这个问题断断续续的原因显然是,没有依赖,构建的顺序是不确定的——所以有时它恰好是正确的顺序并且构建工作,而其他时候它恰好是错误的顺序并且构建失败。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-10-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-05-20
              • 1970-01-01
              相关资源
              最近更新 更多